express是Node.js的官方唯一推荐的框架,它扩展了http工具以及一些好用的功能。如此好用的东西,赶紧的安装起来:

npm install express -g

新版本的express的命令集中到了另一个插件中,简单的如同以前一样的express
-V运行的返回不是它的版本号,而是提示“express不是内部或外部命令”了,所以还要安装express-generator,同样:

npm install express-generator -g

好了,版本检查如下:

$ express -V
//4.2.0

安装好了,首先来看看如何建立一个项目:

cd e:\...\root
express myproject

命令窗口提示:

create : myproject
create : myproject/package.json
create : myproject/app.js
create : myproject/public
create : myproject/public/javascripts
create : myproject/public/images
create : myproject/routes
create : myproject/routes/index.js
create : myproject/routes/users.js
create : myproject/public/stylesheets
create : myproject/public/stylesheets/style.css
create : myproject/views
create : myproject/views/index.jade
create : myproject/views/layout.jade
create : myproject/views/error.jade
create : myproject/bin
create : myproject/bin/www
install dependencies:
$ cd myproject && npm install
run the app:
$ DEBUG=myproject ./bin/www

窗口提示信息如上所示,根据提示,进入myproject目录,

cd myproject && npm install

这里的install是安装项目需要依赖的包,运行后的提示:

debug@0.7.4 node_modules\debug
static-favicon@1.0.2 node_modules\static-favicon
morgan@1.0.1 node_modules\morgan
└── bytes@0.3.0
cookie-parser@1.0.1 node_modules\cookie-parser
├── cookie-signature@1.0.3
└── cookie@0.1.0
body-parser@1.0.2 node_modules\body-parser
├── qs@0.6.6
├── type-is@1.1.0 (mime@1.2.11)
└── raw-body@1.1.7 (string_decoder@0.10.25-1, bytes@1.0.0)
express@4.2.0 node_modules\express
├── parseurl@1.0.1
├── qs@0.6.6
├── merge-descriptors@0.0.2
├── cookie-signature@1.0.3
├── debug@0.8.1
├── escape-html@1.0.1
├── methods@1.0.0
├── buffer-crc32@0.2.1
├── cookie@0.1.2
├── serve-static@1.1.0
├── fresh@0.2.2
├── utils-merge@1.0.0
├── range-parser@1.0.0
├── path-to-regexp@0.1.2
├── type-is@1.1.0 (mime@1.2.11)
├── send@0.3.0 (debug@0.8.0, mime@1.2.11)
└── accepts@1.0.1 (mime@1.2.11, negotiator@0.4.7)
jade@1.3.1 node_modules\jade
├── commander@2.1.0
├── character-parser@1.2.0
├── mkdirp@0.3.5
├── transformers@2.1.0 (promise@2.0.0, css@1.0.8, uglify-js@2.2.5)
├── monocle@1.1.51 (readdirp@0.2.5)
├── constantinople@2.0.1 (uglify-js@2.4.15)
└── with@3.0.0 (uglify-js@2.4.15)

此时项目的node_modules中的目录如图,即为上述的安装提示信息中的那些包。

回到根目录/myproject下,找到package.json文件,可以看到,刚刚安装的这些包等等的信息都已经配置到该文件中去了

    接下来打开根目录下的app.js文件
    首先简单分析一下该文件的结构,该文件由一下几大块构成:
1、引入模块;
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();

2、设置模版引擎;

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade'); 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')));

3、设置views路径;

app.use('/', routes);
app.use('/users', users);

4、捕捉404错误并处理;

app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});

5、开发环境的错误处理;

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
});
});
}

6、产品环境下的错误处理;

app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});

7、最后当然是对外输出接口了;

module.exports = app;

现在开始建一个自己的页面,在根目录下的routes文件夹下建立一个js文件命名为hello.js,打开编辑器,添加如下内容:

var express = require('express');
var router = express.Router();
router.get('/',function(req,res){
res.send('<h1>Hello world!</h1>');
});
module.exports = router;

重新回到app.js文件中,添加几行代码:

var hello = require('./routes/hello');
app.use('/hello', hello);

此时在Node.js命令窗口中输入npm start进行启动,看到提示如下,在浏览器中打开localhost:3000,回车:


 
  到此成功,这个例子中,我们仅仅做一个简单的页面以了解构建过程,所以,该项目就以一个页面的网站暂且宣告完成,主要用来说明步骤,更多内容自己接着添加...

最新版本express 4.2.0的快速建站--简单举例的更多相关文章

  1. Python快速建站系列-Part.Three-注册和登录

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 上一个Part已经给TSSS编好了一个简单的Web服务,网页的基础模版也写好了,那从这个Part开始就慢慢增加编写功能. 先写基础功能:注册和登 ...

  2. 阿里云Ubuntu快速建站

    阿里云Ubuntu快速建站 有一个小笑话: 从前有个程序员遇到了一个问题.他想,没事,我懂,用线程就好了.现他有两个问题了. 本人小白,对网站部署什么都不懂,只是申请个阿里云服务器,把我的站点放上去. ...

  3. Python快速建站系列-Part.One-组装开发环境

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 源代码都在github上:SmallStudyStation 现在是个demo,但回来会租个服务器,等功能完善了放到服务器上挂着,域名jusot ...

  4. Uix Kit 快速建站前端开发套件-工具箱

    这个产品维护已经有一年了(由于业务需求不同,目前没有做中文版,产品本身是针对国外网站),自己本身是做UI出生,开发只是业余爱好,仅仅作为平时工作的需要.杂七杂八会一些前后端开发.并非职业码农! 我是一 ...

  5. CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加y ...

  6. 【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    原文地址:https://www.cnblogs.com/lzpong/p/5755678.html 我这里是centos7 升级到gcc8.1,过程差不多,参考这篇文章,记录一下. ---原文--- ...

  7. 【Jmeter】Linux(Mac)上使用最新版本Jmeter(5.0)做性能测试

    本文我们一起来学习在Linux(Mac)上利用Jmeter进行性能测试并生成测试报告的方法. 环境准备 JDK 访问这个地址 [JDK11.01],根据实际环境下载一个JDK. Jmeter Jmet ...

  8. NodeJs -- express 快速建站

    直接上干货 1.新建一个目录来存放我们即将要做的东西: 2.win+R打开小黑框:进入到我们的目录下: 3.首先我们要全局安装Express框架:**在这一步之前要确保你本机上安装了node:** n ...

  9. Python快速建站系列-Part.Four-首页内容填充

    |版权声明:本文为博主原创文章,未经博主允许不得转载. Part.Three中实现了注册和登录的功能,那这一节完成主页内容的填充,并且主页中要实现简单的可以查找代码的功能. 而且有于公共代码部分存储在 ...

随机推荐

  1. Objective-C中的关联(objc_setAssociatedObject,objc_getAssociatedObject,objc_removeAssociatedObjects)

    关联的概念 所谓的关联,字面意思是把两个相关的对象放在一起,实际也是如此.把两个对象相互关联起来,使得其中的一个对象成为另外一个对象的一部分,这就是关联. 关联的作用 使用Category,我们可以给 ...

  2. java调用本地默认浏览器

    1 http://blog.csdn.net/casularm/article/details/3401018 2

  3. 自定义ListView和GridView

    1 http://blog.chengyunfeng.com/?p=465 2

  4. ROS多个网段做隔离

    ROS路由器有多个LAN口,网段分别是 192.168.0.0/24 和 192.168.1.0/24. 用192.168.1.0/24做为访客使用,因此在路由器上面设置过滤器. /ip firewa ...

  5. laravel学习之路1:认证相关

    Laravel中Auth::guard()表示什么意思? Auth::check() 是判断用户是否登录的方法,如果使用的默认用户系统,那这样使用没问题. 但是使用两组用户的话,如何使用各组用户的功能 ...

  6. JavaScript函数的中实参个数和形参个数的获取

    首先先理解下什么是函数的形参和函数的实参,其实很好理解的,下面举例说明 如何获取形参的长度以及实参的长度 获取实参的长度 可以看到控制台输出的长度是3, 这里有疑问了,arguments是什么那? a ...

  7. Python读取文件数据

    1题目要求: 文本文件有这些数据,需要的只有其中的5个属性,如下颜色标记 像以下的数据达到75万组: 1product/productId: B0000UIXZ4 2product/title: Ti ...

  8. vim visual模式 复制

    按ESC再按“V”,进入visual模式 用键盘向左向右箭头选中要复制的文字,按两下"Y"键 再到要粘贴的地方,按“P”键即可. 转自: http://jingyan.baidu. ...

  9. Android 浏览器文本垂直居中问题

    问题描述 在开发中,我们常使用 line-height 属性来实现文本的垂直居中,但是在安卓浏览器渲染中有一个常见的问题,就是对于小于12px的字体使用 line-height 属性进行垂直居中的时候 ...

  10. 微信小程序的文件结构 —— 微信小程序教程系列(1)

    所有文章均是CSDN博客所看,已按照作者要求,注明出处了,感谢作者的整理! 博客文章地址:http://blog.csdn.net/michael_ouyang/article/details/548 ...