1、项目环境搭建
1.1、 安装node这个不多说了。
1.2、安装express,全局安装-g
npm install -g express
1.3、安装express-generator,全局安装-g
express4.0之后把创建一个APP的功能分离出来为express-generator,没它你创建不了应用程序,需要全局安装-g
npm install -g express-generator
1.4、创建express项目
在想要创建的项目目录下打开cmd窗口,这样就会创建如下目录文件结构,项目就算创建完毕了。
这个时候package.json文件中哟express,但是有没有express-generator.
如果不是全局安装的上面两个模块就只能手动找到模块底下的bin文件中执行。
express JadeWebApp //默认是jade引擎 express -e EjsWebApp //要创建ejs引擎用下面的命令
2、项目介绍
2.1、项目结构介绍
1.node_modules文件夹
这文件夹就是在创建完项目后,cd到项目目录执行npm install后生成的文件夹,下载了项目需要的依赖项
2.package.json文件
此文件是项目的配置文件(可定义应用程序名,版本,依赖项等等)
node_modules文件夹下的依赖项是从哪里知道的呢?原因就是项目根目录下的这个package.json文件,执行npm install时会去找此文件中的dependencies,并安装指定的依赖项
3.public文件夹(包含images、javascripts、stylesheets)
这个文件夹做过Web开发的应该一看就知道,为了存放图片、脚本、样式等文件的
4.routes文件夹
用于存放路由文件
5.views文件夹
存放视图
2.2、项目内容介绍
1.app.set(name,value)
把名字为name的项的值设为value,用于设置参数
//设定端口 app.set(‘port‘, process.env.PORT || 3000); //设定视图路径主要清楚__dirname的意思就可以了,它是node.js中的全局变量,表示取当前执行文件的路径 app.set(‘views‘, path.join(__dirname, ‘views‘)); //设定视图引擎模板,还可以设定其他模板,后续介绍 app.set(‘view engine‘, ‘jade‘);
2.app.use([path], function)
用这个方法来使用中间件,因为express依赖于connect,有大量的中间件,可以通过app.use来使用;path参数可以不填,默认为‘/‘
//这一句中可能要注意一下,express.static()是处理静态请求的, //设置了public文件,public下所有文件都会以静态资料文件形式返回 //(如样式、脚本、图片素材等文件) app.use(express.static(path.join(__dirname, ‘public‘))); //上面代码表示当用户使用/访问时,调用routes,即routes目录下的index.js文件, //其中.js后缀省略,用/users访问时,调用routes目录下users.js文件 var routes = require(‘./routes/index‘); var users = require(‘./routes/users‘); app.use(‘/‘, routes); app.use(‘/users‘, users);
3.app.get(name)
获取名为name的项的值
if(app.get(‘env‘) === ‘development‘) { app.use(function(err, req, res, next) { res.status(err.status|| 500); res.render(‘error‘, { message: err.message, error: err }); }); } //表示如果是开发环境,处理error时会输出堆栈信息
4.路由文件index.js
主要看下面这段代码
router.get(‘/‘, function(req, res) { res.render(‘index‘, { title: ‘<h1>Express</h1>‘,users:[{username: ‘Wilson‘}, {username: ‘Wilson Zhong‘}, {username: ‘Zhong Wei‘}] });});
这段表示,router.get表示通过get请求/时,响应后面的function处理,两个参数分别是request、response;
res.render表示调用模版引擎解析名字index的模板,传并传入了title和users两个对象做为参数;
为什么它会知道解板views目录下的index.ejs?而不是其它目录下的文件,或者后其它后缀名的文件?
3、node中常用模块介绍
4、node项目调试介绍
调试nodejs目前知道的有三种方式:
a.下载VS2012的nodejs插件,用VS2012调试
b.用webForm
c.下载node-inspector模块。
我亲测过a和c,vs我就不说了,必须强大,缺点就是感觉就点大材小用了,写个nodejs而已,大动干戈启动VS有点太卡了。所以我用的c方式,当然 了,提前还需要一个文本编辑器,nodejs的文本编辑利器当属Sublime Text了,很爽的,完爆nodepad++和ue,而且它也可以编辑其他语言。
利用node-inspector调试方式如下:
a.首先node —debug-brk app.js
b.然后新打开一个窗口,启动 node-inspector
出现如下:
Node Inspector v0.5.0
info - socket.io started
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.
浏览器中调试输入 : http://127.0.0.1:8080/debug?port=5858
不出意外将会在浏览器看到源代码的调试界面,ps:最好用谷歌浏览器,不解释。
最后再推荐一个模块supervisor,最好全局安装npm install -g supervisor,这样启动程序时(如app.js)可以 supervisor app启动,这样它会监视你的代码,一旦代码修改了就会自动重启服务,不必手动,调试很方便
http://blog.csdn.net/kkkkkxiaofei/article/details/32935199
Ejs引擎中的三种标签
1.<%= %>
这个标签在接到收到title: ‘<h1>Express</h1>‘时,从显示效果来看,他直接输出HTML标签到页面上,输出的是转义后的变量值
2.<%- %>
而这个标签,从显示效果上看,他没有直接输出HTML代码到页面上,输出的是没有转义后的变量值
3.<% %>
而这个标签,从显示上看,他循环了出来参数中的值,标签中是javascript逻辑代码,注意括号的开闭合
node中的中间件
所谓的中间件就是类似于过滤器,面向切面编程,在执行一些东西之前要先执行这些东西。
http://www.yuansir-web.com/2013/06/25/%E7%90%86%E8%A7%A3node-js%E4%B8%AD%E9%97%B4%E4%BB%B6%E4%BB%A5%E5%8F%8Aconnect-%E6%A8%A1%E5%9D%97/
node中的缓存策略
http://www.infoq.com/cn/articles/nodejs-8-connect-module-part-2/
免责说明
1、本博客中的文章摘自网上的众多博客,仅作为自己知识的补充和整理,并分享给其他需要的coder,不会用于商用
2、因为很多博客的地址已经记不清楚了,所以不会在这里标明出处
OK,这样就算入门了吧,基础的东西推荐大家去汇智网上去学习。