Node系列——express项目搭建

我们两清 提交于 2019-12-01 16:29:14

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   在app.js页面右键选择debug,这个我觉得最好用。

c.下载node-inspector模块。

    我亲测过a和c,vs我就不说了,必须强大,缺点就是感觉就点大材小用了,写个nodejs而已,大动干戈启动VS有点太卡了。所以我用的c方式,当然 了,提前还需要一个文本编辑器,nodejs的文本编辑利器当属Sublime Text了,很爽的,完爆nodepad++和ue,而且它也可以编辑其他语言。

利用node-inspector调试方式如下:

.首先全局安装

npm install node-inspector -g

②.用node --debug-brk  app.js启动项目
③.然后新打开一个窗口,启动 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:最好用谷歌浏览器,不解释。


d. 最后再推荐一个模块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,这样就算入门了吧,基础的东西推荐大家去汇智网上去学习。







































标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!