node.js第十三课(工程的结构)


一、app.js 工程的入口
   分析代码:
   1.我们导入了express模块,前面我们通过npm install依赖上了,在这里就可以直接通过require获取、
   2.routes是一个文件夹形式的本地模块,即./routes/index.js,他的功能是为指定的路径组织返回内容,相对于mvc架构中的控制器。
   3.app.set是Express的参数设置工具,接受一个键(key)和一个值(value),可以用的参数如下:
      basepath:基础机制,通常用于res.redirect()跳转
      views:视图文件的目录,存放模版文件
      port:指定的端口
      view engine:视图模块引擎(推荐使用ejs)
      view options:全局视图参数对象
      view cache:启用视图缓存
      case sensitive routes:路径区分大小写
      strict routing:严格路径,启用后不会忽略路径末尾的"/"
      jsonp callback:开启透明的jsonp支持
    4.Express依赖于connect,connect更加短小精悍,是一个偏向基础设施的框架,提供了大量的中间件,可以通过app.use启用。
      中间件:一系列的组件连接到一起,然后让http的请求依次流过这些组件。这些被connect串联起来的组件被称为中间件
      app.configure中启用了五个中间件:
      bodyParser:解析客户端请求。
      router:项目的路由支持
      static:提供静态文件支持。
      methodOverride:函数重写
      errorHandler:错误控制器
    5.app.get(‘/‘,routes.index),是一个路由控制器,用户如果访问‘/‘路径,则routes.index来控制。
    6.通过express.createServer()函数创建一个应用的实例
 //引用模块
 var express = require(‘express‘),
   routes = require(‘./routes‘),
   user = require(‘./routes/user‘);
   http = require(‘http‘),
   path = require(‘path‘);
 //实例化express对象
 var app = express();
 //配置app的参数和启用中间件
 app.configure(function(){
  app.set(‘port‘, process.env.PORT || 3000);
  app.set(‘views‘, __dirname+‘/views‘);
  app.set(‘views engine‘,‘ejs‘);
  app.use(express.favicon());
  app.use(express.logger(‘dev‘));
  app.use(express.bodyParser()); 
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, ‘public‘)));
 });
 
 //配置开发模式
 app.configure(‘development‘, function(){
  app.use(express.errorHandler()); 
 });
 
 //配置路由控制
 app.get(‘/‘,routes.index);
 app.get(‘/users‘,user.list);
 
 //配置服务并监听端口
 http.createServer(app).listen(app.get(‘port‘),function(){
  console.log(‘Express server listening on port‘ + app.get(‘port‘)); 
 });
二、routes/index.js是路由文件,相当于控制器,用于组织展示的内容。
//index.js
exports.index = function(req, res){
  res.render(‘index‘, { title: ‘octopus‘ });
};
    app.js中通过app.get(‘/‘,routes.index)将‘/‘路径映射到exports.index函数下,其中只有一个语句,
    res.render(‘index‘,{title:"octopus"}),功能是调用模版解析引擎,并传入一个对象作为参数,这个对象只有一个属性,即title
三、index.ejs模版文件,即routes.index.js中调用的模版。
//index.ejs
<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
  </body>
</html>

   它的基础是HTML语言,其中包含了<%=title%>的标签,功能是显示引用的变量。

   即res.render函数的第二个参数是第一个参数指定的路径下文件中引用的参数.

node.js第十三课(工程的结构),布布扣,bubuko.com

node.js第十三课(工程的结构)

上一篇:ExtJS4 根据登录后不同的角色分配不同的树形菜单


下一篇:长这么大了,现在才了解MVC,MVC到底怎么分层??