node.js工程的结构

我们使用express生成了package.json,它只产生了javascript的app.js和routes/index.js。模版引擎ejs有文件index.ejs,此外还有样式表style.css。
  12讲问题:创建工程时候一直使用jade。要求用ejs

一、app.js 工程的入口。

分析代码:
/*** Module dependencies.*/
/*引用模块*/
var express = require('express'), routes = require('./routes'), user = require('./routes/user'), http = require('http'), util=require('util'), path = require('path'),engine=require('./system');
/*实例化express对象*/
var app = express();/*配置app的参数和启用中间件*/
app.configure(function(){app.set('port', process.env.PORT || 3000);//告诉我们的页面模版目录app.set('views', __dirname + '/views');//告诉它我们使用那种模版引擎app.set('view 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('/pcat', routes.pcat);
app.get('/user/:username',function(req,res){res.send("user :"+req.params.username);});app.get('/users', user.list);
app.all('/test/:username',function(req,res,next){console.log("all methods is call");//我们在这里验证用户名是否存在。//如果存在直接send或者调用next(new Error('用户已经存在'));//如果不存在我们调用next()把控制权交给下一个路由规则next();res.send('all的路由规则完毕。')
});app.get('/test/:username',function(req,res){res.send("user:"+req.params.username)
})
app.get('/abc',routes.pcat)
//改造ejs引擎中的方法
app.engine('ejs', engine);
//将layout的模版布局模版设置为默认
app.locals._layoutFile='layout'
//片段视图
app.get('/list',function(req,res){res.render('list',{title:'片段视图',items:['marico',1991,'pcat']})
});
//视图助手
app.locals({inspect:function(obj){return util.inspect(obj,true)+"    解析成功";}
})
app.get('/view',function(req,res){res.locals({headers:function(req,res){return req.headers;}})res.render('view',{title:"PCAT"});
})
//创建服务并监听端口
http.createServer(app).listen(app.get('port'), function(){console.log("Express server listening on port " + app.get('port'));
});

            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:错误控制器
connect详解:http://cnodejs.org/topic/4fb79b0e06f43b56112b292c

        5.app.get('/',routes.index),是一个路由控制器,用户如果访问'/'路径,则routes.index来控制。

        6.通过express.createServer()函数创建一个应用的实例

     二、routes/index.js是路由文件,相当于控制器,用于组织展示的内容。

app.js中通过app.get('/',routes.index)将'/'路径映射到exports.index函数下,其中只有一个语句,res.render('index',{title:"pcat"}),功能是调用模版解析引擎,并传入一个对象作为参数,这个对象只有一个属性,即title
三、index.ejs模版文件,即routes.index.js中调用的模版。
它的基础是HTML语言(我们降低了学习难度),其中包含了<%=title%>的标签,功能是显示引用的变量。即res.render函数的第二个参数出啊如的对象的属性.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++面试(七)

1、 谈谈你做过的项目&#xff0c;你主要负责哪个模块&#xff0c;代码量是多大&#xff08;除去VC自动生成的那些代码&#xff09; 2、 参与项目的人数是多少&#xff1f; 5、 谈谈你对C三个特点的理解&#xff08;简单描述一下&#xff09;。 6、 为什么要封装&#xff0c;如…

kerberos 下运行spark 报错 Requested user hdfs is banned

启动运行报错 main : run as user is hdfs main : requested yarn user is hdfs Requested user hdfs is bannedFailing this attempt. Failing the application.ApplicationMaster host: N/AApplicationMaster RPC port: -1queue: root.defaultstart time: 1565170753121fina…

node.js路由控制

一、工作原理 当通过浏览器访问app.js建立的服务器时&#xff0c;会看到一个简单的页面&#xff0c;实际上它已经完成了许多透明的工作&#xff0c;当访问http://localhost:3000&#xff0c;浏览器会向服务器发送请求&#xff0c;包括请求的方法、路径、HTTP协议版本和请求头信…

C、C++和MFC中文件的操作

对文件读写的三种方法1.C中FILE *pFilefopen("1.txt","w");fwrite(" http://www.sunxin.org",1,strlen("http://www.sunxin.org"),pFile ");//fseek(pFile,0,SEEK_SET);//fwrite("ftp:",1,strlen("ftp:"),pF…

spark 提交至yarn异常超时 Client cannot authenticate via:[TOKEN, KERBEROS]

spark-cluster提交任务&#xff0c;提示 exit code :10 异常&#xff0c;具体需要到容器日志中去查看 19/08/07 18:09:24 INFO yarn.Client: client token: N/Adiagnostics: Application application_1565171057576_0008 failed 2 times due to AM Container for appattempt_…

node.js模块引擎

一、什么是模版引擎 模版引擎是一个从页面模版根据一定的规则生成HTML的工具&#xff0c;PHP首发&#xff0c;随后出现了ASP、JSP都沿用这个模式&#xff0c;即建立一个HTML页面模版&#xff0c;插入可执行的代码。运行时动态生成HTML。缺点&#xff1a; 页面功能逻辑与页面布局…

勤学如春起之苗,不见其增,日有所长!

“工作三年&#xff0c;并不等于拥有三年的工作经验。”这句话告诉我们每天都要思考自己当天所遇到的问题&#xff0c;记录下来&#xff0c;并且思考这个问题的解决办法&#xff0c;每一周或两周总结这些问题和解决办法&#xff0c;归纳思考问题根源&#xff0c;学习解决问题的…

HBase ACL管理 Hbase 权限管理

场景&#xff1a;hadoop集群已经进行kerberos认证 启动Hbase相关配置Hbase权限分为以下五种&#xff1a;Read(R) : 可以读取给定范围内数据的权限 Write(W) : 可以在给定范围内写数据 Executor(X) : 可以在指定表执行Endpoints类型的协处理 Create(C) : 可以在给定范围内创建和…

node.js ejs的视图模块引擎

一、版本升级 Express从2.0升级到3.0,将ejs的用法忽略&#xff0c;改为用户自定义形式。引入ejs/index.js的模块&#xff0c;来支持ejs的模版引擎二、引入引擎的模块&#xff0c;然后在app中调用engine函数改造ejs引擎 app.engine(ejs, engine);将layout.ejs设置成默认的布局模…

文本文件和二进制文件的区别

广义的二进制文件即指文件&#xff0c;由文件在外部设备的存放形式为二进制而得名。狭义的二进制文件即除文本文件以外的文件。文本文件是一种由很多行字符构成的计算机文件。文本文件存在于计算机系统中&#xff0c;通常在文本文件最后一行放置文件结束标志。文本文件的编码基…

Kerberos Hbase Api 操作

初始化连接加载配置参数&#xff0c;这里只创建连接&#xff0c;具体操作hbase的api没有变化 static { try{ Configuration conf HBaseConfiguration.create();conf.addResource(new Path("config/hbase-site.xml"));//读取配置文件conf.set("hadoop.securi…

ndoe.js实战之开发微博第一讲之工具准备

内容&#xff1a;搭建开发环境和视图制作。一、创建项目 1.express ejs blog 创建项目cd blog 进入项目npm install 加入包的依赖2.加入ejs视图模版引擎支持加入文件 expand_modules/ejs/index.jsvar enginerequire("./expand_modules/ejs");在app中改造引擎app.e…

MySql索引的原理

数据库索引&#xff0c;是数据库管理系统中一个排序的数据结构&#xff0c;以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B树。 在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08…

SparkStreaming 异常:java.lang.NoSuchMethodError: scala.Predef scope()Lscala/xml/TopScope

SparkStreaming运行报错 19/05/05 22:35:18 INFO SparkEnv: Registering OutputCommitCoordinator Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.$scope()Lscala/xml/TopScope$;at org.apache.spark.ui.jobs.AllJobsPage.<init>(…

node.js微博案例第二讲

一、mongodb数据库安装 1.安装包下载&#xff1a;http://www.mongodb.org/downloads2.开始安装解压放入D:\Program Files\目录下。(推荐文件名为mongodb)创建Data、log和Data/db文件夹将mongodb的数据库文件D:\Program Files\mongodb\data\db目录下执行命令&#xff1a…

Spark提交 指定 kerberos 认证信息

spark-submit --principal hdfs/hostnamejast.COM --keytab hdfs-hostname.keytab --jars $(echo lib/*.jar | tr ,) --class com.jast.test.Test test.jar

mongodb数据库常用指令

详细安装看我文章http://blog.csdn.net/dreamzuora/article/details/78877898打开在bin目录下mongo.exe来操作数据库常用命令&#xff1a;show dbs //查看所有库use blog 使用指定的库show collections 查看所有的文档db.表名.find() 查询指定文档的数据db.表名.insert({…

二叉树遍历解析

1 / \ 2 3 / \ / \ 4 5 6 7 当你拿到一棵二叉树&#xff0c;无论它的形状如何的千奇百怪 我们都可以将它按照如下的方式划分根/ \ 左子树 右子树 一棵有很多个节点的二叉树可以划分为以上的形式 也可以这么…

Hadoop Kerberos 认证下 Sentry 安装 + Sentry 权限设置使用

目录 一、安装Sentry &#xff11;.&#xff2d;ariaDB中创建sentry数据库 2.CDH中添加sentry 服务 3.hive配置 启动Sentry 4.Impala配置 启动Sentry 5.Hue配置 启动Sentry 6.Hdfs配置 启动Sentry 7.重启服务&#xff0c;使配置生效 二、Sentry权限测试 1.创建hive超…

数据结构与算法的联系

首先,数据结构是一门计算机语言学的基础学科&#xff0c;它不属于任何一门语言&#xff0c;其体现的是几乎所有标准语言的算法的思想。 上面的概念有一些模糊&#xff0c;我们现在来具体说一说&#xff0c;相信你门的数据结构使用的是一门具体的语言比如C/C语言来说明&#xff…