mirror of
https://github.com/wahyd4/wahyd4.github.com.git
synced 2026-08-09 05:15:56 +10:00
2558 lines
73 KiB
HTML
2558 lines
73 KiB
HTML
<!DOCTYPE html>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<html class="theme-next gemini use-motion" lang="zh-Hans">
|
||
<head>
|
||
<meta charset="UTF-8"/>
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
|
||
<meta name="theme-color" content="#222">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta http-equiv="Cache-Control" content="no-transform" />
|
||
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" />
|
||
|
||
<link href="/css/main.css?v=5.1.2" rel="stylesheet" type="text/css" />
|
||
|
||
|
||
<meta name="keywords" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?v=5.1.2" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="description" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography">
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:title" content="大染志">
|
||
<meta property="og:url" content="http://toozhao.com/page/8/index.html">
|
||
<meta property="og:site_name" content="大染志">
|
||
<meta property="og:description" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography">
|
||
<meta property="og:locale" content="zh-Hans">
|
||
<meta name="twitter:card" content="summary">
|
||
<meta name="twitter:title" content="大染志">
|
||
<meta name="twitter:description" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography">
|
||
|
||
|
||
|
||
<script type="text/javascript" id="hexo.configurations">
|
||
var NexT = window.NexT || {};
|
||
var CONFIG = {
|
||
root: '/',
|
||
scheme: 'Gemini',
|
||
version: '5.1.2',
|
||
sidebar: {"position":"left","display":"post","offset":12,"offset_float":12,"b2t":false,"scrollpercent":false,"onmobile":false},
|
||
fancybox: true,
|
||
tabs: true,
|
||
motion: true,
|
||
duoshuo: {
|
||
userId: '0',
|
||
author: '博主'
|
||
},
|
||
algolia: {
|
||
applicationID: '',
|
||
apiKey: '',
|
||
indexName: '',
|
||
hits: {"per_page":10},
|
||
labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
|
||
}
|
||
};
|
||
</script>
|
||
|
||
|
||
|
||
<link rel="canonical" href="http://toozhao.com/page/8/"/>
|
||
|
||
|
||
|
||
|
||
|
||
<title>大染志</title>
|
||
|
||
|
||
|
||
|
||
|
||
<script>
|
||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||
ga('create', 'UA-5243064-16', 'auto');
|
||
ga('send', 'pageview');
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
</head>
|
||
|
||
<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="container sidebar-position-left
|
||
page-home
|
||
">
|
||
<div class="headband"></div>
|
||
|
||
<header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
|
||
<div class="header-inner"><div class="site-brand-wrapper">
|
||
<div class="site-meta ">
|
||
|
||
|
||
<div class="custom-logo-site-title">
|
||
<a href="/" class="brand" rel="start">
|
||
<span class="logo-line-before"><i></i></span>
|
||
<span class="site-title">大染志</span>
|
||
<span class="logo-line-after"><i></i></span>
|
||
</a>
|
||
</div>
|
||
|
||
<p class="site-subtitle">想要玩得很 High 的程序员</p>
|
||
|
||
</div>
|
||
|
||
<div class="site-nav-toggle">
|
||
<button>
|
||
<span class="btn-bar"></span>
|
||
<span class="btn-bar"></span>
|
||
<span class="btn-bar"></span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<nav class="site-nav">
|
||
|
||
|
||
|
||
<ul id="menu" class="menu">
|
||
|
||
|
||
<li class="menu-item menu-item-home">
|
||
<a href="/" rel="section">
|
||
|
||
<i class="menu-item-icon fa fa-fw fa-home"></i> <br />
|
||
|
||
首页
|
||
</a>
|
||
</li>
|
||
|
||
|
||
<li class="menu-item menu-item-archives">
|
||
<a href="/archives/" rel="section">
|
||
|
||
<i class="menu-item-icon fa fa-fw fa-archive"></i> <br />
|
||
|
||
归档
|
||
</a>
|
||
</li>
|
||
|
||
|
||
<li class="menu-item menu-item-tags">
|
||
<a href="/tags" rel="section">
|
||
|
||
<i class="menu-item-icon fa fa-fw fa-tags"></i> <br />
|
||
|
||
标签
|
||
</a>
|
||
</li>
|
||
|
||
|
||
<li class="menu-item menu-item-about">
|
||
<a href="/about" rel="section">
|
||
|
||
<i class="menu-item-icon fa fa-fw fa-user"></i> <br />
|
||
|
||
关于
|
||
</a>
|
||
</li>
|
||
|
||
|
||
<li class="menu-item menu-item-知识图谱">
|
||
<a href="https://toozhao.com/knowledge-mind-mapping" rel="section">
|
||
|
||
<i class="menu-item-icon fa fa-fw fa-question-circle"></i> <br />
|
||
|
||
知识图谱
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
</nav>
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
<main id="main" class="main">
|
||
<div class="main-inner">
|
||
<div class="content-wrap">
|
||
<div id="content" class="content">
|
||
|
||
<section id="posts" class="posts-expand">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/11/01/node-jade-express-mysql-simplelogin/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/11/01/node-jade-express-mysql-simplelogin/" itemprop="url">node、express、mysql、jade实现用户登录数据获取及验证</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-11-01T00:00:00+11:00">
|
||
2011-11-01
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:49:09+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/node-js/" itemprop="url" rel="index">
|
||
<span itemprop="name">node.js</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p>今天要给大家介绍一下如何利用node.js的expressjademysql三个module实现获取form表单的内容以及通过数据库验证登录的正确性。请确保你已经下载好了前面三个module并且你的电脑里面已经安装好mysql。</p>
|
||
<p>首先看看运行页面:</p>
|
||
<p><a href="/images/2011/11/1.jpg"><img class="aligncenter size-full wp-image-2104" title="1" src="/images/2011/11/1.jpg" alt="" width="537" height="395"></a></p>
|
||
<p>再给大家看看整个小系统的目录结构吧:</p>
|
||
<p><a href="/images/2011/11/2.jpg"><img class="aligncenter size-full wp-image-2105" title="2" src="/images/2011/11/2.jpg" alt="" width="254" height="280"></a></p>
|
||
<p>请大家按照图中所示的目录结构建立好所有的文档吧。当然jquery你下载就可以了。</p>
|
||
<p>接下来,我们将建立数据库:</p>
|
||
<pre class="brush: sql; title: ; notranslate" title="">create database receipts; #创建数据库
|
||
|
||
#创建名为user的表
|
||
<pre style="padding-left: 30px;">use receipts;
|
||
create table user (
|
||
userid bigint auto_increment not null primary key,
|
||
username varchar(20) not null,
|
||
pass varchar(30) not null
|
||
);
|
||
</pre>
|
||
|
||
<p>然后我们来书写我们所需要的login.jade。这里使用jade,我们需要创建一个简单的layout.jade(模板),在layout模板中我们将定义最基本的网页框架。设定大多数网页相同的部分。这里关于jade的语法我就不多讲了,jade的官网上很详细,直接给出layout的代码:</p>
|
||
<pre class="brush: xml; title: ; notranslate" title="">!!! 5
|
||
html
|
||
head
|
||
<span style="color: #ff0000;"> title=title</span>
|
||
<span style="color: #ff0000;"> link(rel='stylesheet',type='text/css',href='/css/style.css')</span>
|
||
body!=body
|
||
</pre>
|
||
|
||
<p>注意,由于jade会对我们所写的代码进行重新编码,编码成linux的相关格式,这里建议大家使用类似notepad++、ultra editor等软件时将其编码为UTF-8 无DOM格式,并且请不要在文件中同时使用空格和Tab对文件分隔,会导致报错。这里强调一下比如上述 title=title,这里是把网页的标题赋值给一个变量叫做title,之后我们声明并赋值title。link后面不能添加空格。类似的也一样。</p>
|
||
<p>下面是我们的登录界面login.jade,代码如下:</p>
|
||
<pre class="brush: xml; title: ; notranslate" title="">form(id='login',method='post',action='/login')
|
||
h1 Log In
|
||
p(style='margin-top:20px;') #{error}
|
||
fieldset(id='inputs')
|
||
input(id='username',name='username',type='text',placeholder='Username',autofocus='',required='')
|
||
input(id='password',name='password',type='password',placeholder='Passowrd',required='')
|
||
fieldset(id='actions')
|
||
input(type='submit',id='submit',value='Log in')
|
||
a(href='') Forgot your password
|
||
a(href='http://google.com') Register
|
||
</pre>
|
||
|
||
<p>大致是定义一个完整的表单。并且定义一个显示提示错误信息的地方。当然还有最重要的css代码。我将在后面提供源码给大家下载。<br>home.jade和index.jade这个程序里面我们用不到,因此内容可以不管它。</p>
|
||
<p>接下来,我们就开始写代码了。当然是使用express了。首先我们将写两个路由器在app.js中,一个是显示登录的页面并且作为首页,另外一个是验证登录的页面。</p>
|
||
<p>//首先添加配置信息</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">app.set('view engine','jade'); //设置模板引擎
|
||
app.set('views',__dirname+'/views'); //配置jade文件夹
|
||
app.use(express.static(__dirname+'/public')); //设置静态文件文件夹,比如css,js,/images
|
||
<span style="color: #ff0000;">app.use(express.bodyParser()); //用户获取form表单数据</span>
|
||
app.use(express.methodOverride());
|
||
|
||
//设置首页。
|
||
app.get('/',function(req,res){
|
||
res.render('index',{title:'欢迎使用收据管理系统',error:''});
|
||
});
|
||
</pre>
|
||
|
||
<pre style="padding-left: 30px;">在编写登录验证登录路由之前,我们需要明确这里我们需要处理那些事:</pre>
|
||
|
||
<ul>
|
||
<li>获取表单中数据</li>
|
||
<li>创建mysql数据库连接</li>
|
||
<li>从mysql请求数据</li>
|
||
<li>将数据库中数据与form表单进行比较,并返回结果。</li>
|
||
</ul>
|
||
<p>//获取表单中数据<br>var user = req.body.username; //这样便可以获取到form表单中 name=”username”值,依赖于express.bodyParser()</p>
|
||
<p>创建mysql数据库连接。这里我们将做一个小小的封装。将封装的函数写入 user.js</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">//连接mysql服务器
|
||
function connectServer(){
|
||
//创建mysql连接,设置用户名,密码
|
||
var client = mysql.createClient({
|
||
user:'root',
|
||
password :'root'
|
||
});
|
||
client.host= '127.0.0.1';
|
||
client.port=3306;
|
||
<span style="color: #ff0000;">client.database='receipts'; //选择需要使用的数据库,创建数据库时不必须,其他时候必须</span>
|
||
return client; //返回创建好的数据库连接对象
|
||
}
|
||
</pre>
|
||
|
||
<p>//接下来我们将从数据库获取数据,同样我们也做一个封装。因为要执行数据库操作。因此我们需要传入一个数据库连接对象client,并且传入用户名,以便查出该用户对应的密码。再则我们需要创建一个回调函数以便于,在获取到数据库中的值后,做出相关判断。按照常规长发很难获取值。应该闭包可以。(这个回调函数得感谢一个群里的大牛。),代码如下。</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">//执行mysql查询操作。返回查询获取到的对象
|
||
function selectFun(client,username,callback){
|
||
//client为一个mysql连接对象
|
||
client.query('select pass from user where username="'+username+'"',function(err,results,fields){
|
||
if(err) throw err;
|
||
|
||
callback(results); //在获取结果之后由回调函数进行相关操作
|
||
});
|
||
}
|
||
</pre>
|
||
|
||
<pre style="padding-left: 30px;">我们将关于数据库的两个函数,写在user.js里面。因此这里我们需要导出这两个函数,使用exports关键字,以便在其他地方可以使用。
|
||
<pre class="brush: jscript; title: ; notranslate" title="">
|
||
exports.connect = connectServer;
|
||
exports.selectFun = selectFun; //注意没有函数的()哦。</pre>
|
||
</pre>
|
||
|
||
|
||
<pre style="padding-left: 30px;"></pre>
|
||
|
||
|
||
<pre style="padding-left: 30px;">好了函数写好了。现在我们就该在app.js中使用了。</pre>
|
||
|
||
|
||
<pre style="padding-left: 30px;">导入我们刚创建的user.jsmodule</pre>
|
||
|
||
|
||
<pre style="padding-left: 30px;"><span style="color: #ff0000;">var usr = require('./dao/user');</span></pre>
|
||
|
||
|
||
<pre style="padding-left: 30px;">然后就可以使用了。
|
||
<pre class="brush: jscript; title: ; notranslate" title="">
|
||
app.post('/login',function(req,res){
|
||
var user = req.body.username,
|
||
pass = req.body.password,
|
||
client = usr.connect(), //创建数据库连接
|
||
result = null;
|
||
//这里在回调函数里面进行mysql返回值的验证。很重要
|
||
<span style="color: #ff0000;">usr.selectFun(client,req.body.username,function(result){</span>
|
||
console.log('查询结果为'+result);
|
||
|
||
if(result[0]===undefined){ //这里需要说明的是,mysql返回结果存在一个数组对象中。
|
||
res.send('没有该用户!');
|
||
}else{
|
||
<span style="color: #ff0000;">if(result[0].pass==req.body.password){</span>
|
||
res.send('登录成功');
|
||
}else{
|
||
res.send('你输入的密码有误');</pre>
|
||
});
|
||
}
|
||
}
|
||
}); //执行查询
|
||
});
|
||
</pre>
|
||
|
||
|
||
<pre style="padding-left: 30px;">大家是不是看得太乱了。对不起。都是我的文字控制能力不好。大家凑合着看看吧。我把源码给大家,当然没有包含mysql创建数据库的源码哦。</pre>
|
||
|
||
|
||
<blockquote><br> <pre style="padding-left: 30px;">大家下载源码吧:<a href="http://115.com/file/bh03gw2q#" target="_blank" rel="external">http://115.com/file/bh03gw2q#</a></pre><br><br></blockquote>
|
||
|
||
|
||
<pre style="padding-left: 30px;">有什么问题,我们一起交流一起学习吧。</pre>
|
||
|
||
</pre></pre>
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/29/node-js-web-express/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/29/node-js-web-express/" itemprop="url">Node.js web框架express入门(1)</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-29T00:00:00+11:00">
|
||
2011-10-29
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:49:04+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/node-js/" itemprop="url" rel="index">
|
||
<span itemprop="name">node.js</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p>从我自己现在学校node.js说了解的情况,我觉得node.js至少比Java简单不少。使用node.js的诸多第三方框架更是让node.js简单了不少。其实express 框架几天前我就看了一些。也写了一些例子。虽然没有完全掌握,但是我想在这里和大家一起分享我学到的知识,也算是一种记录。</p>
|
||
<p>首先,当然我们也得安装express 的module</p>
|
||
<pre class="brush: xml; title: ; notranslate" title="">npm install express</pre>
|
||
|
||
<p>接下来我们就是可以开始写一个简单的程序了。</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">var express = require('express'); //导入module
|
||
var app = express.createServer(); //创建并返回一个express的server对象
|
||
app.get('/',function (req,res){ //为跟地址目录设置路由,并且监听get方法。
|
||
res.send("Hello,World"); //向浏览器返回hello world
|
||
});
|
||
app.listen(4000); //设置服务器监听4000端口
|
||
</pre>
|
||
|
||
<p>运行程序,然后再浏览器中输入localhost:4000试试,是不是出现了hello world了。当然这只是一个最简单的程序。下面我们可以再多做一些。</p>
|
||
<p>这里需要说明一下。默认的,系统将在您的请求处理中,在此例里面即在app.get();里面为你添加下面两句话</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">res.charset='utf-8'; //系统默认的res.send()和res.render()都默认采用utf-8编码
|
||
res.contentType('Text/html'); //系统提供默认为Text/Html的Content-Type
|
||
</pre>
|
||
|
||
<p>接下来,我们将通过链接中的地址获取请求内容</p>
|
||
<p>在程序中加入一段代码如下</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">app.get('/hello/:name',function (req,res){
|
||
//如果你在地址栏中输入如下/hello/Junv.那么你将在页面中看到name=======Junv
|
||
//'/hello/:name'中的name相当于定义一个变量name,并且把我们输入的名字赋值给他。
|
||
res.send('name======'+req.params.name);
|
||
});
|
||
</pre>
|
||
|
||
<p>试试看看吧。成功了吧!</p>
|
||
<p>对不起,写着写着觉得很别扭。今天就写到这里吧。下次在继续吧。</p>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/26/node-js-send-e-mail/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/26/node-js-send-e-mail/" itemprop="url">使用Node.js发送电子邮件(E-mail)</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-26T00:00:00+11:00">
|
||
2011-10-26
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:49:00+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/node-js/" itemprop="url" rel="index">
|
||
<span itemprop="name">node.js</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p><span style="color: #ff0000;">10月27日更新,可以发送附件</span></p>
|
||
<p>今天晚上花了点时间试了一下使用node.js发送电子邮件,也挺简单的,<del>不过有个问题一直没有解决,就是发送附件,</del>我弄明白的时候,会补充资料的。</p>
|
||
<p>首先我们还是得安装node的第三方用户发送email的module 。</p>
|
||
<pre><code>npm install nodemailer
|
||
</code></pre><p>安装好之后,还有一个问题需要注意,我们应该确保用来发送邮件的邮箱地址是打开只是IMAP 、SMTP功能的,这样才可以发送邮件成功。</p>
|
||
<p>接下来我们就开始写代码,其实很简单,官方网站也都已经说得很清楚了。</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">var mail = require('nodemailer'); //包含发送邮件所需module
|
||
mail.SMTP = {
|
||
use_authentication: true, //如果我们使用QQ等邮箱,这个必须写且为true
|
||
host: 'smtp.qq.com', //定义用来发送邮件的邮箱服务器,一般是QQ这些的
|
||
port:25, //定义服务器端口,一般是25 ,如果是使用SSL端口一般为465,或者587
|
||
ssl:false, //默认不适用SSL,可以省略不写
|
||
user: 'wahyd4@qq.com', //邮箱用户名
|
||
pass:'*****' //输入邮箱密码
|
||
}
|
||
mail.send_mail(
|
||
{
|
||
sender:'wahyd4@qq.com', //发送邮件的地址
|
||
to:'wahyd4@gmail.com', //发给谁
|
||
subject:'随便把', //主题
|
||
body:'Hello,这个邮件来自node.js'
|
||
},
|
||
//回调函数,用户判断发送是否成功,如果失败,输出失败原因。
|
||
function(error,success){
|
||
if(!error){
|
||
console.log('message success');
|
||
}else{
|
||
console.log('failed'+error);
|
||
}
|
||
}
|
||
);</pre>
|
||
|
||
<p>这里我没有使用SSL进行发送,而且发送的是纯文本,也可以发送html,如果发送html则在send_mail函数里面加上:</p>
|
||
<pre><code>html: '<p> 你好。。邮件来自node.js</p>',
|
||
</code></pre><p>如果使用SSL进行发送我们则需要将mail.SMTP改为:</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">mail.SMTP = {
|
||
use_authentication: true, //如果我们使用QQ等邮箱,这个必须写且为true
|
||
host: 'smtp.qq.com', //定义用来发送邮件的邮箱服务器,一般是QQ这些的
|
||
port:465, //定义服务器端口,一般是25 ,如果是使用SSL端口一般为465
|
||
ssl:true, //默认不适用SSL,可以省略不写
|
||
user: 'wahyd4@qq.com', //邮箱用户名
|
||
pass:'*****' //输入邮箱密码
|
||
}
|
||
</pre>
|
||
|
||
<p>好了。现在你运行程序试试,是不是成功了。</p>
|
||
<p>我今天晚上遇到一个错误 :<strong>503 ERROR,need EHLO and AUTH first</strong>。就是因为没有添加use_authentication = true的缘故。加上之后,搞定。</p>
|
||
<p>———————————————————分割线———————-</p>
|
||
<p>发送附件的话。首先我们得使用</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">var fs = require('fs'); //导入文件系统相关的包</pre>
|
||
|
||
<p>饭后我们将文件读入内存,并将其发送。</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">//读入文件
|
||
var img = fs.readFileSync(__dirname+"/cat.jpg");
|
||
|
||
var attachment = [{
|
||
'filename': "cat.jpg", //这里只是给附件取名称,而不是导入文件内容
|
||
'contents': img //导入文件
|
||
}] //定义我们需要发送的附件
|
||
</pre>
|
||
|
||
<p>接下来我们需要在send_mail函数中加入发送附件即可</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">mail.send_mail(
|
||
{
|
||
sender:'wahyd4@qq.com', //发送邮件的地址
|
||
to:'wahyd4@gmail.com', //发给谁
|
||
subject:'测试发送文件', //主题
|
||
attachments: attachment, //添加附件
|
||
body:'Hello,这个邮件来自node.js,包含附件哦,亲!'
|
||
|
||
},
|
||
</pre>
|
||
|
||
<p>附上Nodemailer的网址:<a href="http://www.nodemailer.org/" target="_blank" rel="external">http://www.nodemailer.org/</a></p>
|
||
<p>enjoy it!</p>
|
||
<p>最后还是感谢 <a href="https://github.com/andris9" target="_blank" rel="external">andris9</a> 大叔很快帮我解决了问题!</p>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/25/node-js-connect-mysql/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/25/node-js-connect-mysql/" itemprop="url">使用node.js连接mysql数据库</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-25T00:00:00+11:00">
|
||
2011-10-25
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:56+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/node-js/" itemprop="url" rel="index">
|
||
<span itemprop="name">node.js</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p style="text-align: center;"><br> <a href="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/1036320.png" target="_blank" rel="external"><img class="aligncenter size-medium wp-image-1778" title="1036320" src="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/1036320-296x300.png" alt="" width="190" height="192"></a><br></p>
|
||
|
||
<p>Javascript连接数据库可能很多同学之前都没有想到吧,不过现在使用node.js我们可以很容易地连接各种数据库。比如传统关系型数据库Mysql以及现在正火的非关系型数据库。这里讲一下如何连接mysql数据库其实官方的文档以及很详细了。</p>
|
||
<p>首先我们需要连接mysql所需的Module</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">npm install mysql</pre>
|
||
|
||
<p>接下来就可以开始编程,连接数据库了。</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">var mysql = require('mysql');//导入mysql Module
|
||
var client = mysql.createClient({
|
||
user:'root',
|
||
password :'root'
|
||
});
|
||
/*
|
||
设置数据库的地址,这里请不要使用localhost,
|
||
至少我在windows这里出错,如果不写系统默认为localhost
|
||
*/
|
||
client.host ='127.0.0.1';
|
||
client.port = 3306; //设置数据库端口,如果不写默认为3306
|
||
client.database = 'node';
|
||
//create a database
|
||
client.query('create database test_db',function(err){
|
||
if (err && err.number != mysql.ERROR_DB_CREATE_EXISTS) {
|
||
throw err; //添加异常处理
|
||
}
|
||
});
|
||
</pre>
|
||
|
||
<p>这里我们使用的是client.query();执行sql语句,官方的API中client.query(sql,[params,cb])方法中还可以添加回调函数。</p>
|
||
<p>执行其他SQL语句也是使用client.query()函数。这里说一下插入语句</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">client.query('insert into node_t values(?,?)',[1000,'Junv'] );</pre>
|
||
|
||
<p>推荐这种参数化插入,而不是将值直接写在里面,可以防止sql注入。</p>
|
||
<p>注意:今天下午我最初尝试连接数据库的时候,它一直报错“Domain name not found”,只要我们加上</p>
|
||
<pre class="brush: jscript; title: ; notranslate" title="">client.host ='127.0.0.1';</pre>
|
||
|
||
<p>将系统默认的host=localhost改成127.0.0.1即可。具体原因不明。</p>
|
||
<p>是不是很简单呢?接下来我会写关于express 和jade的博客了。一边学习一边写博客。哈哈。</p>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/23/solve-npm-js-cant-install-node-js/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/23/solve-npm-js-cant-install-node-js/" itemprop="url">解决npm.js不能成功安装Node.js包</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-23T00:00:00+11:00">
|
||
2011-10-23
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:40+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/node-js/" itemprop="url" rel="index">
|
||
<span itemprop="name">node.js</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p><a href="/images/2011/10/3.jpg"><img class="aligncenter size-full wp-image-2110" title="3" src="/images/2011/10/3.jpg" alt="" width="169" height="74"></a></p>
|
||
<p>学习Node.js当然安装其他开发者开发的各种各样的包一定是必须的,不知道在内地的童鞋发现一个问题没有,我们现在很难从npm.js直接去下载安装包了。笔者在电信和教育网连续试了几天都没有成功。</p>
|
||
<p>大概介绍一下npm.js吧。npm.js是node.js的一个包管理工具。通过你可以很方便的安装所有node.js的第三方包、类库,而不需要知道他们的地址、不需要再自己一次一次手动安装。</p>
|
||
<p>过程是这样的:(注:笔者只是在windows环境下测试过)</p>
|
||
<p>一般地我们会在cygwin里面使用” npm install 你需安装的包名”进行安装。但是我反反复复试过多次,均是很难成功,只有昨天夜里一点左右成功过一次。最初我认为我我们的网速太慢了,于是我在cygwin下面配置代理:</p>
|
||
<blockquote>
|
||
<p>export http_proxy=<a href="http://127.0.0.1:8087" target="_blank" rel="external">http://127.0.0.1:8087</a> 注:我使用的是go agent进行代理(具体安装请google一下)。</p>
|
||
</blockquote>
|
||
<p>通过代理我成功地安装成功了npm 本身,但是当我转而通过 npm install …进行安装的时候就出现错误了,npm提示 Socket hang up。具体原因不明,总之npm 不能使用cygwin里面配置的代理,于是我使用 export -n http_proxy 删除代理设置。</p>
|
||
<p>随后我在网上又收到了另外一个解决方法。在npm里面设置打理</p>
|
||
<blockquote>
|
||
<p>npm –proxy <a href="http://127.0.0.1:8087" target="_blank" rel="external">http://127.0.0.1:8087</a></p>
|
||
</blockquote>
|
||
<p>不过设置好之后使用 npm install …,发现同样不成成功,npm 根本没有通过代理去发请求。</p>
|
||
<p>最后,我找到一个神器npmf。它的大致介绍是说npmf 是npm的一个复制,他可以永久保存那些包的每个版本。并且你通过npmf安装的包在你下次部署软件的时候依然可用。老实说后面一句话,我没有理解明白,到底是本地缓存,还是在网上缓存。</p>
|
||
<blockquote>
|
||
<p>各位可以前往npmf网站一看究竟:<a href="http://npmfjs.org/" target="_blank" rel="external">http://npmfjs.org/</a></p>
|
||
<p>同时还有一个介绍npmf的网页:<a href="http://nodeknockout.com/teams/preservation-society" target="_blank" rel="external">http://nodeknockout.com/teams/preservation-society</a></p>
|
||
</blockquote>
|
||
<p><span style="color: #008080;"><strong>接下来就是见证奇迹的时刻了:</strong></span></p>
|
||
<p>我们可以直接把npm 默认的registry 换成 npmf的:</p>
|
||
<blockquote>
|
||
<p>npm config set registry <a href="http://npmfjs.org:9000" target="_blank" rel="external">http://npmfjs.org:9000</a></p>
|
||
<p>npm install <span style="color: #ff0000;">你需要安装的包</span></p>
|
||
</blockquote>
|
||
<p>是不是发现很神奇,一个包可能10秒甚至更少就可以安装成功。如果你想把registry改成npm默认的</p>
|
||
<blockquote>
|
||
<p>npm config set registry <a href="http://registry.npmjs.org" target="_blank" rel="external">http://registry.npmjs.org</a></p>
|
||
</blockquote>
|
||
<p>或者你可以临时使用npmf的registry的包,在你每次安装的包的时候都使用一下语句</p>
|
||
<blockquote>
|
||
<p>npm –registry <a href="http://npmfjs.org:9000" target="_blank" rel="external">http://npmfjs.org:9000</a> install <span style="color: #ff0000;">你需要安装的包</span></p>
|
||
</blockquote>
|
||
<p>告诉你们个秘密:通过上面的两种方法,可以使用代理哦。速度又提高了不少。哈哈。。。。。</p>
|
||
<p>总结:造成npmjs.org的速度很慢的原因我始终不太清楚。我想npmjs.org的网络应该比npmfjs.org好很多才对。怎么会反过来了。以前我在有人抱怨过说内地使用 npm安装包很难。但是我不知道这是个别现象还是大家都是这个样子。难道G*F*W故意把 registry.npmjs.org和谐了?哎,不管了,大家使用我这个方法来吧。欢迎各位留言</p>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/19/notepad-settings/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/19/notepad-settings/" itemprop="url">Notepad++ 设置、插件配置</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-19T00:00:00+11:00">
|
||
2011-10-19
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:36+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/我们爱分享/" itemprop="url" rel="index">
|
||
<span itemprop="name">我们爱分享</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p style="text-align: center;"><br> </p><p><br> 虽然平时也一直在使用Notepad++,但是并没有深入地了解它,没有去鼓捣它。今天中午看了一篇博文说另外一个文本编辑器多么多么强大。我下载使用了一下,发现里面比较好的功能就是函数花括号自动完成、可以更换主题、支持分屏、可以安装插件同时查看几个文件,不过有一点不好就是他是收费软件。于是我想,开源的notepad++是不是也有那些功能呢?在我搜索一番之后,于是就发现了notepad的惊天大秘密。<br> </p>
|
||
|
||
<p><br> <strong>主题设置</strong><br> </p>
|
||
|
||
<p><br> 依次点击面板上的settings——style configurator。系统默认提供十几种不同的风格,可供选择。用户还可以为不同的编程语言设置个性化的前、后景色,设置字体大小、种类。我个人使用的主题是Black Board.<br> </p>
|
||
|
||
<p><br> <strong>分屏实现</strong><br> </p>
|
||
|
||
<p><br> 据我发现目前notepad++没有快捷键可以开启分屏,而是用户右键点击某个打开的文档列表的Tab。选择Move to other view 或者 Copy to other view,即可以移动或者复制到分屏。此时屏幕编程两屏界面(好像notepad++目前只支持两屏)<br> </p>
|
||
|
||
<p><br> <strong>字体的放缩</strong><br> </p>
|
||
|
||
<p><br> 当光标在目前程序时,按住Ctrl键同时,滚动鼠标滚轮即可实现字体的大小改变。<br> </p>
|
||
|
||
<p><br> <strong>函数自动补充</strong><br> </p>
|
||
|
||
<p><br> 依次点击Settings—-preferences—Back up/Auto completion。勾选enable auto-completion on each input.下面有function completion 和word completion可供选择。<br> </p>
|
||
|
||
<p><br> 同样也可以勾选Function parameter hint on input。这个是函数暗示吧。需要注意的是,我发现在javascript 和html 下提示相对较好,但是都不会补充完全,都是部分补充。笔者在Java下面测试,大致只能提示类一级,不能提示其二级方法。如果你想拥有很好的提示还是使用eclipse吧。<br> </p>
|
||
|
||
<p><br> <strong>插件安装:</strong><br> </p>
|
||
|
||
<p><br> notepad++支持两种方式安装插件(plugin):第一种,将插件的.dll文件复制到notepad++安装目录的plugin目录下。第二种方法是通过notepad++自带的插件plugin management 进行安装。点击即可实现自动安装插件。安装完成后重启即可工作。<br> </p>
|
||
|
||
<p><br> 这里推荐一些比较好的插件列表:<a href="http://my.oschina.net/hcom/blog/4429" target="_blank" rel="external">http://my.oschina.net/hcom/blog/4429</a><br> </p>
|
||
|
||
<p><br> Notepad++官方下载:<a href="http://notepad-plus-plus.org/" target="_blank" rel="external">http://notepad-plus-plus.org/</a><br> </p>
|
||
|
||
<p><br> 我也是今天才发现notepad的这些功能,希望可以和大家一起交流、讨论。<br> </p>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/15/struts2-i18n/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/15/struts2-i18n/" itemprop="url">Struts2 国际化使用、实现</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-15T00:00:00+11:00">
|
||
2011-10-15
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:32+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/编程之美/" itemprop="url" rel="index">
|
||
<span itemprop="name">编程之美</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p>这学期在学习Java EE,也是我选择的方向。因此很感兴趣。前几天看了Struts2 实现国际化,于是今天下午便真实操作一遍。</p>
|
||
<p>首先我们要实现国际化,当然得建立相关语言的<strong>.properties</strong>文件。且该文件需放在classes目录下。即是eclipse的src的根目录。</p>
|
||
<p>struts2的命名规则是 “自定义名_语言_国别(英文字母为大写).properties”</p>
|
||
<p>比如:</p>
|
||
<blockquote>
|
||
<p>中文简体:test_zh_CN.properties</p>
|
||
<p>美国英文:test_en_US.properties</p>
|
||
</blockquote>
|
||
<p>其他国家的,请大家自己在网上搜索一下吧。</p>
|
||
<p>.properties 文件的内容形式为key=value</p>
|
||
<p>比如:</p>
|
||
<blockquote>
|
||
<p>中文: username=用户名(这里中文要被转码为另外一种格式,才能使用。转换后为: u7528u6237u540D,eclise会自动帮你转换)</p>
|
||
<p>英文:username=username</p>
|
||
</blockquote>
|
||
<p>写好properties文件之后。我们就需要修改struts.xml文件让其支持国际化属性,在struts标签下添加:</p>
|
||
<blockquote>
|
||
<constant name="”struts.custom.i18n.resources”" value="”test”"> </constant>
|
||
|
||
</blockquote>
|
||
<p>这里的value属性的值“test”为你的properties文件的最前面的自定义名。</p>
|
||
<p>然后再使用的时候,比如我想获取username的国际化属性:</p>
|
||
<blockquote>
|
||
<p> <s:text name="”username”">或者 <s:property value="”getText(‘username’)”/"> 均可以</s:property></s:text></p>
|
||
</blockquote>
|
||
<p>当然还有另外一种方法不需要在struts.xml添加语句。在jsp需要使用国际化资源的时候,添加如下:</p>
|
||
<blockquote>
|
||
<p><s:i18n name="”test”"></s:i18n></p>
|
||
<p><s:text name="”username”"> 或者<s:property value="”getText(‘username’)”/"></s:property></s:text></p>
|
||
<p></p>
|
||
</blockquote>
|
||
<p>这里的name标签的test和上面的一样。需要注意的是。你每使用一次国际化资源就需要添加一个<s:i18n>标签。</s:i18n></p>
|
||
<p>其他的使用就和一般的struts没有区别了。</p>
|
||
<p>然后我们可能需要手动切换语言,在jsp页面里面添加:</p>
|
||
<blockquote>
|
||
<pre><a href="doAction.action?request_locale=zh_CN"> 中文</a>
|
||
<a href="doAction.action?request_locale=en_US">English</a></pre>
|
||
|
||
</blockquote>
|
||
<pre>doAction.action 为我需要显示的Action地址。</pre>
|
||
|
||
<pre>其他的就不多讲了。这个例子只是Struts2最简单的国际化实现。</pre>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/13/ai-tired/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/13/ai-tired/" itemprop="url">吵架好烦,哎,心力交瘁</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-13T00:00:00+11:00">
|
||
2011-10-13
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:27+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/未分类/" itemprop="url" rel="index">
|
||
<span itemprop="name">未分类</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p>好累!好累!</p>
|
||
<p>我哪里错了嘛,就因为我说了一句话不太该说的话!</p>
|
||
<p>然后你就拂袖而去,纵使我再三挽留你,你却越来越凶,每次你这个样子,我真的不晓得应该怎么办!</p>
|
||
<p>我可以怎么办嘛?</p>
|
||
<p>我有这样凶过吗?在你面前,我不晓得脾气好了好多倍</p>
|
||
<p>你个性却却越来越不好。一摸到就生气,我每次都是在第一时间给你道歉,告诉你我错了。我不该这样做,但是不晓得你想过没有,难道真的每次错的都是我吗,我有那样吼过你吗?</p>
|
||
<p>我不是怕你,是因为我爱你,所以我在忍!我愿意接受这一切。但是你不能每次都这样啊。</p>
|
||
<p>好累,好烦。不晓得应该从哪里和你沟通,</p>
|
||
<p>今天明明不是因为我们的问题,你却说我偏向你寝室的同学,说我偏向漂亮的女生。</p>
|
||
<p>真的,大部分关于他们的印象我是从你那里得到的啊。我不喜欢太要强的女生,有啥子了不起嘛。我见多了。</p>
|
||
<p>你每次都说我是做错了不愿意道歉。但是你又晓得,很多次我真的觉得我没得错,但是我又在道歉。</p>
|
||
<p>在你面前我永远都是错的。</p>
|
||
<p>在你们寝室面前,我永远都是被最后考虑的。呼之即来挥之即去。。。。</p>
|
||
<p>你理解我一下嘛。你怎么就不理解人呢!</p>
|
||
<p>没人理解我,好累。好累!</p>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/12/money-is-dirty/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/12/money-is-dirty/" itemprop="url">钱让很多小人原形毕露</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-12T00:00:00+11:00">
|
||
2011-10-12
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:23+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/我说/" itemprop="url" rel="index">
|
||
<span itemprop="name">我说</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p>这几天学校正在搞奖学金的评比,需要每个同学自己对自己的情况进行评估,你在上一学年所获得的将和其他证书这些都是获得加分,当然学习成绩也是分数中很重要的一部分。于是情况出现了。</p>
|
||
<p>能够得奖的人为了得更高的将,千方百计地去找分加,同时还要看看其他人是不是快要超过他了。其他人加分是不是正规的,其他人是不是在到处找关系盖章?</p>
|
||
<p>真他妈的恶心,在这个奖学金评比之中我看到了谄媚、欺诈、鬼鬼祟祟,说人家加分这样或者那样的不正常。</p>
|
||
<p>哎!真的是,钱让小人原形毕露了。</p>
|
||
<p>想想去年我也不是这个样子啊。看看有些人,把所有能够加的分都加到最高!你妹啊!</p>
|
||
<p>一个奖学金也是,得奖的人都是妈的一群水货,什么都不会,就是会考试、会讨好老师、会拍马屁、会装疯卖傻!</p>
|
||
<p>你们就潇洒吧!我又一次明白了,千里之堤,溃于蚁穴!</p>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
<link itemprop="mainEntityOfPage" href="http://toozhao.com/2011/10/09/eclipse-auto-complited/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="name" content="Junv">
|
||
<meta itemprop="description" content="">
|
||
<meta itemprop="image" content="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
</span>
|
||
|
||
|
||
<header class="post-header">
|
||
|
||
|
||
|
||
<h1 class="post-title" itemprop="name headline">
|
||
|
||
<a class="post-title-link" href="/2011/10/09/eclipse-auto-complited/" itemprop="url">Eclipse 自动补全、联想设置</a></h1>
|
||
|
||
|
||
<div class="post-meta">
|
||
<span class="post-time">
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建于" itemprop="dateCreated datePublished" datetime="2011-10-09T00:00:00+11:00">
|
||
2011-10-09
|
||
</time>
|
||
|
||
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-calendar-check-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">更新于:</span>
|
||
|
||
<time title="更新于" itemprop="dateModified" datetime="2014-07-22T18:48:19+10:00">
|
||
2014-07-22
|
||
</time>
|
||
|
||
</span>
|
||
|
||
|
||
<span class="post-category" >
|
||
|
||
<span class="post-meta-divider">|</span>
|
||
|
||
<span class="post-meta-item-icon">
|
||
<i class="fa fa-folder-o"></i>
|
||
</span>
|
||
|
||
<span class="post-meta-item-text">分类于</span>
|
||
|
||
|
||
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
|
||
<a href="/categories/我说/" itemprop="url" rel="index">
|
||
<span itemprop="name">我说</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p>笔者在第一次使用eclispe 3.7即indigo这个版本的时候,便发现一个小小的不快:平时在不知道某个方法怎么写的时候会按下Alt +/去获取eclipse给出的提示。但是在3.7这个版本却不好用,得到的是eclipse自动帮你选择一个他认为最合适的方法或者变量等等,帮你补全,而不是原来的显示所有可供选择的,让你来选择。</p>
|
||
<p>纠结了很久,期间尝试过使用网上说的修改Content Assist。将之前默认的 .后面加上ABCD…abcd…所有52个字符。并且 把联想的时间从系统默认的200ms提高到50ms。但是经过修改之后,eclipse变得和visual studio 一样,你每输入一个字符,系统就会进行一次提示。不过我发现这种情况下eclipse占用的CPU、内存资源变多了,在我的笔记本有时候还会变得顿卡。这不是最好的办法。</p>
|
||
<blockquote>
|
||
<p>前几天吧,我才发现这个问题的症结所在。原来是eclipse官方的快捷键方式改变了。其实以前Alt+/那个联想一直在,只是在3.7版本里面这个快捷键变成了自动补全(即系统自动选择一个最合适的进行补充)。我们需要做的就是依次打开Windows——preferences——General——Keys。找到<strong>Content Assist</strong>这一项,这一项系统默认的是Alt+Space。这里我们把它改成<strong>Alt+/</strong></p>
|
||
</blockquote>
|
||
<p><a href="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/Eclipse_content_assist.png" target="_blank" rel="external"><img class="aligncenter size-medium wp-image-1701" title="Eclipse_content_assist" src="http://junv-wordpress.stor.sinaapp.com/uploads/2011/10/Eclipse_content_assist-300x108.png" alt="" width="300" height="108"></a></p>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-eof"></div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
</section>
|
||
|
||
|
||
<nav class="pagination">
|
||
<a class="extend prev" rel="prev" href="/page/7/"><i class="fa fa-angle-left"></i></a><a class="page-number" href="/">1</a><span class="space">…</span><a class="page-number" href="/page/7/">7</a><span class="page-number current">8</span><a class="page-number" href="/page/9/">9</a><span class="space">…</span><a class="page-number" href="/page/31/">31</a><a class="extend next" rel="next" href="/page/9/"><i class="fa fa-angle-right"></i></a>
|
||
</nav>
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<div class="sidebar-toggle">
|
||
<div class="sidebar-toggle-line-wrap">
|
||
<span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
|
||
<span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
|
||
<span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<aside id="sidebar" class="sidebar">
|
||
|
||
<div class="sidebar-inner">
|
||
|
||
|
||
|
||
|
||
|
||
<section class="site-overview sidebar-panel sidebar-panel-active">
|
||
<div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<img class="site-author-image" itemprop="image"
|
||
src="http://blog.tuxue.xyz/libr.jpg?imageView2/1/w/200/h/200/q/90|imageslim"
|
||
alt="Junv" />
|
||
<p class="site-author-name" itemprop="name">Junv</p>
|
||
|
||
<p class="site-description motion-element" itemprop="description">Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography</p>
|
||
|
||
</div>
|
||
<nav class="site-state motion-element">
|
||
|
||
|
||
<div class="site-state-item site-state-posts">
|
||
|
||
<a href="/archives/">
|
||
|
||
<span class="site-state-item-count">307</span>
|
||
<span class="site-state-item-name">日志</span>
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="site-state-item site-state-categories">
|
||
<a href="/categories/index.html">
|
||
<span class="site-state-item-count">69</span>
|
||
<span class="site-state-item-name">分类</span>
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="site-state-item site-state-tags">
|
||
<a href="/tags/index.html">
|
||
<span class="site-state-item-count">247</span>
|
||
<span class="site-state-item-name">标签</span>
|
||
</a>
|
||
</div>
|
||
|
||
|
||
</nav>
|
||
|
||
|
||
|
||
<div class="links-of-author motion-element">
|
||
|
||
|
||
<span class="links-of-author-item">
|
||
<a href="https://github.com/wahyd4" target="_blank" title="GitHub">
|
||
|
||
<i class="fa fa-fw fa-github"></i>
|
||
|
||
|
||
GitHub
|
||
|
||
</a>
|
||
</span>
|
||
|
||
<span class="links-of-author-item">
|
||
<a href="https://www.linkedin.com/in/junwei-zhao-46944557" target="_blank" title="LinkedIn">
|
||
|
||
<i class="fa fa-fw fa-linkedin"></i>
|
||
|
||
|
||
LinkedIn
|
||
|
||
</a>
|
||
</span>
|
||
|
||
<span class="links-of-author-item">
|
||
<a href="https://stackoverflow.com/users/1140611/junv" target="_blank" title="StackOverflow">
|
||
|
||
<i class="fa fa-fw fa-stack-overflow"></i>
|
||
|
||
|
||
StackOverflow
|
||
|
||
</a>
|
||
</span>
|
||
|
||
<span class="links-of-author-item">
|
||
<a href="http://weibo.com/wahyd4" target="_blank" title="Weibo">
|
||
|
||
<i class="fa fa-fw fa-weibo"></i>
|
||
|
||
|
||
Weibo
|
||
|
||
</a>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</section>
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</aside>
|
||
|
||
|
||
|
||
</div>
|
||
</main>
|
||
|
||
<footer id="footer" class="footer">
|
||
<div class="footer-inner">
|
||
<div class="copyright" >
|
||
|
||
©
|
||
<span itemprop="copyrightYear">2018</span>
|
||
<span class="with-love">
|
||
<i class="fa fa-heart"></i>
|
||
</span>
|
||
<span class="author" itemprop="copyrightHolder">Junv</span>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
<div class="back-to-top">
|
||
<i class="fa fa-arrow-up"></i>
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
|
||
window.Promise = null;
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>
|
||
|
||
|
||
<script type="text/javascript" src="/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
|
||
|
||
|
||
<script type="text/javascript" src="/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
|
||
|
||
|
||
<script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>
|
||
|
||
|
||
<script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
|
||
|
||
|
||
<script type="text/javascript" src="/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript" src="/js/src/utils.js?v=5.1.2"></script>
|
||
|
||
<script type="text/javascript" src="/js/src/motion.js?v=5.1.2"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript" src="/js/src/affix.js?v=5.1.2"></script>
|
||
|
||
<script type="text/javascript" src="/js/src/schemes/pisces.js?v=5.1.2"></script>
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript" src="/js/src/scrollspy.js?v=5.1.2"></script>
|
||
<script type="text/javascript" src="/js/src/post-details.js?v=5.1.2"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript" src="/js/src/bootstrap.js?v=5.1.2"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</body>
|
||
</html>
|