Node.js笔记(一)项目的建立
1、supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启 Node.js。
使用方法很简单,首先使用 npm 安装 supervisor:
2、app.js是工程的入口,里面负责定义路由控制器
routes/index.js 是路由控制器文件 用于组织展示的内容
3、index.ejs 是模板文件 即routes/index.js中调用的模版
4、app.get('/hello', routes.hello);
固定的路径设置路由规则
5、
app.get('/user/:username',function(req,res){res.send('user:'+req.params.username);});
高级的路由匹配模式
6、app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
模版引擎,表明要是用的模版引擎是 ejs,模版的位置在 views子目录下
在routes/index.js的exports.index函数中通过语句来调用模版引擎:
res.render('index', {title: 'Express'})
res.render的作用就是调用模版引擎,并将结果返回给浏览器客户端,它接受的两个参数
第一个参数是模版的名称,第二个参数是模版里面要转换过来的数据,用与模版翻译
ejs的标签系统只有三种:<% code %> 表示javascript代码,
<%= code %> 显示转换过HTML特殊字符的内容
<%- code %> 显示原始HEML内容
7、layout.ejs 是一个网页布局模版,一般页眉页脚等重复比较多的会在这个模版里面来写,
也可以关闭模版功能,
在app.js中app.configure中layout: false
另一种情况就是,一个项目可能有多个网页布局模版,前台或者后台,
也可以在模版翻译的时候制定布局模版
res.render('userlist', {
title: '用户列表后台管理系统',
layout: 'admin'
});
8、从 http://twitter.github.com/bootstrap/下载 Twitter Bootstrap
从 http://jquery.com/ 下载一份最新版的 jquery.js
-------------------------------------------------------------------------------------------
////////////////////////////Node.js建立项目////////////////////////////////////////////////
-------------------------------------------------------------------------------------------
1、安装Express框架,
$npminstall-gexpress//全局安装$npminstall-gexpress-generator//这段命令可别忘了,不然会提示“express命令找不
到的”
2、创建工程
express-emicroblog//即ejs,-j(即jade)(Express4.0出来之后老的命令改变了)
3、创建依赖
cdmicroblog//microblog为前面创建工程的文件夹npminstall
4、启动项目
npmstart
5、关闭服务器 连着按两个Ctrl + C。
项目的入口文件 app.js
varexpress=require('express');varpath=require('path');varfavicon=require('serve-favicon');varlogger=require('morgan');varcookieParser=require('cookie-parser');varbodyParser=require('body-parser');varroutes=require('./routes/index');varusers=require('./routes/users');varapp=express();//viewenginesetupapp.set('views',path.join(__dirname,'views'));app.set('viewengine','ejs');//uncommentafterplacingyourfaviconin/public//app.use(favicon(path.join(__dirname,'public','favicon.ico')));app.use(logger('dev'));app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended:false}));app.use(cookieParser());app.use(express.static(path.join(__dirname,'public')));app.use('/',routes);app.use('/users',users);//catch404andforwardtoerrorhandlerapp.use(function(req,res,next){varerr=newError('NotFound');err.status=404;next(err);});//errorhandlers//developmenterrorhandler//willprintstacktraceif(app.get('env')==='development'){app.use(function(err,req,res,next){res.status(err.status||500);res.render('error',{message:err.message,error:err});});}//productionerrorhandler//nostacktracesleakedtouserapp.use(function(err,req,res,next){res.status(err.status||500);res.render('error',{message:err.message,error:{}});});module.exports=app;
6、app.set是Express的参数设置工具,接受一个键(Key)一个值(Value)
可用参数如下:
basepath:基础地址,通常用于res.redirect()跳转
views:视图文件目录,存放模版文件
view engine:视图模版引擎
view options:全局视图参数对象
view catch : 启用视图缓存
case sensitive routes:路径是否区分大小写
strict routing:严格路径,启用后不会忽略路径末尾的 "/"
jsonp callback:开启透明的jsonp支持
7、Express依赖与connect,提供了大量的中间件,用app.use来启用。
bodyParser的功能是解析客户端请求,通常是通过POST传送的内容。
8、
app.use('/',routes);app.use('/users',users);
是一个路由控制器,如果请求是访问"/"路径,则会转到'./routes/index'来控制。
9、app.listen(3000); 启动,监听3000端口。该app.js中没有写到,会默认端口为3000
在 /bin/ 目录下的文件 "www" 中,
/***GetportfromenvironmentandstoreinExpress.*/varport=normalizePort(process.env.PORT||'3000');app.set('port',port);.../***Listenonprovidedport,onallnetworkinterfaces.*/server.listen(port);
10、routes/index.js是路由文件,相当于控制器,
varexpress=require('express');varrouter=express.Router();/*GEThomepage.*/router.get('/',function(req,res,next){res.render('index',{title:'Express'});});module.exports=router;
11、index.ejs 是模板文件,即 routes/index.js 中调用的模板。内容是:
<h2><%=title%></h2><p>Welcometo<%=title%></p>
12、layout.ejs
默认情况下所有的模板都继承自 layout.ejs,即 <%- body %>
部分才是独特的内容,其他部分是共有的,可以看作是页面框架。
13、app.js 中并没有一个路由规则指派到 /stylesheets/style.css,但 app 通过
app.use(express.static(path.join(__dirname, 'public'))); 配置了静态文件服务器,因此
/stylesheets/style.css 会定向到 app.js 所在目录的子目录中的文件 public/stylesheets/style.css,
14、重新写一个Hello控制器
1)在app.js里面添加:
app.use('/hello',routes);
2)在index.js里面添加
router.get('/hello',function(req,res,next){res.send('Thetimeis'+newDate().toString());});
这两个文件相互照应着。页面就出来了
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。