Express下ejs的视图模板引擎的建立

 写在前面

由于Express升级到4.0,将ejs的用法忽略,改为用户自定义形式,所以要引入库index.js作为引擎,来支持ejs的模板引擎(点击下载)。

首先是建立一个名字叫nodeitem,引擎为ejs的express模板

$ express  -e nodeitem

$     cd nodeitem

自动安装所指定的依赖

$     npm install                 

$     ls

把index.js文件上传到expand_modules/ejs里面去,上传文件可安装lrzsz

$     tree  expand_modules/

$     vim  app.js

因为我使用的的express3,我的app.js不是入口文件,退出vim

$    cat package.json

我的入口文件是 ./bin/www,想要修改也不难,只需要在app.js文件里添加如下代码即可

 app.set("port",process.env.PORT || 3000);
  http.createServer(app).listen(app.get("port"),function (){
  console.log("this is"+app.get("port"));
  })

    $    node app.js 

   建立模板

 $     vim  app.js

//引入引擎
var engine = require("./expand_modules/ejs/index.js");
//改变中间量及参数
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.set("port",process.env.PORT  || 2000);
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);
//在app中调用engine函数改造引擎,模板引擎在显示层的名字叫layout.ejs
app.engine("ejs",engine);
app.locals._layoutFile="layout";
//路由控制w
app.get('/', routes.index);
app.get("/abc",routes.abc);
app.get("/u/:user",routes.user);
app.get("/post",routes.post)
app.get("/reg",routes.reg);
app.get("/doReg",routes.doReg);
app.get("/login",routes.login);
app.get("/doLogin",routes.doLogin);
app.get("/logout",routes.logout);
app.get('/users', users.list);

    路由选择

       $     cd routes && vim index.js

  

  查看显示层

  $     cd views  &&  ls 

      

   $    vim layout.js

   ejs文件类似于html文件,只需要在html文件的<body>标签里面加入自己设置的模板元素即可。下面是一个例子,最关键的是要在<body>标签里面加入<%-body%>  为了显示原始HTML内容

   

  $     vim  login.ejs

      

   只需要把你想要添加到layout模板里面的html文件的<body>标签内容写入ejs文件即可   模板layout中<%-body%> 会自动解析为html,并予以显示。上面文件只是一个例子。

  写在最后

     ejs引擎书写方式特别像html,但是他有一个缺点就是不支持模板继承,想要模板继承可以使用jada引擎。要想知道两者更加详细的区别,这是飞机票

   

原文地址:https://www.cnblogs.com/dirkhe/p/6847407.html