1、官网:http://expressjs.com/

中文:http://www.expressjs.com.cn/

2、HelloWorld

  1)mkdir node-express-demo

  2)cd .\node-express-demo\

  3)新建app.js文件

  4)npm init -y  : 会以app.js为入口文件,创建package.json

  5)npm install express --save  : 本地安装express并将其保存到依赖列表中,会新建package-lock.json文件,package.json也会添加依赖

  package.json

{
"name": "node-express-demo",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}

  6)app.js

const express = require('express')
const app = express() app.get('/', (req, res) => res.send('Hello World!')) app.listen(3000, () => console.log('Example app listening on port 3000!'))

  7)node .\app.js

3、res.send()

  app.js

const express = require('express')
const app = express() app.get('/', (req, res) => res.send('Hello World!')) app.get('/index', function (req, res) {
res.send("中文会乱码吗?");
}); app.get('/json', function (req, res) {
var jsonObj = {name:"张三"};
res.send(jsonObj);
}); app.listen(3000, () => console.log('Example app listening on port 3000!'))

  

  访问http://127.0.0.1:3000/index,结果

  访问http://127.0.0.1:3000/json,结果

4、app.get、app.use和app.all注册路由

  app.get('/add', fn):请求方法必须是get,请求uri必须是"/add"

  app.use():请求方法任意,请求uri是“/add/...”这样的

  app.all():请求方法任意,请求uri === “/add”

5、通过req.params获取路由中的参数

const express = require('express')
const app = express() app.get('/book/:year/:month/:day', function(req, res) {
res.send(req.params);
}); app.listen(3000, () => console.log('Example app listening on port 3000!'))

  访问http://localhost:3000/book/2019/07/08,结果:

6、静态资源

   app.use('/public', express.static(path.join(__dirname, 'public')));

  请求:http://127.0.0.1:3000/public/images/1.jpg

  匹配"/public",并认为"/public"为虚拟路径,然后将/"images/1.jpg" 与 path.join(__dirname, 'public') 拼接成路径,以此路径去找静态资源。

7、Demo

  

  app.js

var express = require('express');
var config = require('./config.js');
var router = require('./router.js'); var app = express(); // 注册路由
app.use('/', router); // app.use('/public', express.static(path.join(__dirname)));
app.listen(config.port, () => console.log('Example app listening on port ' + config.port + '!'))

  config.js

// 配置信息
module.exports = {
port : 3001
};

  router.js

// 路由模块

// 1、创建一个router对象(既是一个对象,也是一个函数)
var path = require('path');
var express = require('express');
var handler = require('./handler.js');
var router = express.Router(); // 2、通过router对象设置(挂载)路由
router.get('/index', handler.index);
router.get('/list', handler.list);
router.use('/public', express.static(path.join(__dirname, 'public'))); // 3、返回router对象
module.exports = router;

  handler.js

// 业务处理模块
var path = require('path'); module.exports.index = index; // 显示主页
module.exports.list = list; // 显示list页面 function index(req, res) {
// res.send('index页面');
res.sendFile(path.join(__dirname, 'pages' , 'index.html'));
} function list(req, res) {
res.send('list页面');
}

另外可以参考:https://blog.csdn.net/sleepwalker_1992/article/details/83417714

node.js入门学习(六)--express的更多相关文章

  1. node.js入门学习(一)环境安装,REPL,fs模块,path模块,http模块

    一.node.js介绍 1.1.node.js是什么 官网首页总结:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时. 1)node.js是一个开发平台,就像j ...

  2. Node.js入门学习笔记(一)

    先来个最常见的"Hello World!". 打开你最喜欢的编辑器(我用的是Sublime Text),创建一个helloWorld.js的文件.我们要做的就是向stdout输出& ...

  3. node.js入门学习(四)--Demo图书的增删改查

    需求:图书的增删改查,图书数据保存在data.json文件中. 1.Demo结构: 2.首先下载安装node.js,配置环境变量:参考博客 3.项目初始化 1)创建项目根目录node-hello,进入 ...

  4. Node.js入门学习笔记(三)

    基于事件驱动的回调 这个问题不好回答,不过这是Node.js原生的工作方式.它是事件驱动的,这也是它为什么这么快的原因.你可以花一点时间阅读一下Felix Geisendörfer的大作 Unders ...

  5. node.js入门学习笔记整理

    (1)node Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node与javaScript的区别在于,javaScript的顶层对象是window,而no ...

  6. node.js入门学习(五)--Demo模块化改造

    1.node.js中模块的分类 1)node.js内置模块(核心,原生) 所有内置模块在安装node.js时就已经编译成二进制文件,可以直接加载运行(速度较快),部分内置模块,在node.exe这个进 ...

  7. node.js入门学习(三)--npm

    一.npm介绍 1)npm:node package manager是node.js默认的以js编写的软件包管理系统 官网:www.npmjs.com 文档:docs.npmjs.com 2)提到np ...

  8. node.js入门学习(二)MIME模块,request和response对象,demo之不同url请求不同html页面,页面包含图片、样式css等静态资源

    一.构建http服务程序-根据不同请求做出不同响应 // 加载http模块 var http = require("http"); // 创建一个http服务对象 http.cre ...

  9. Node.js入门学习笔记(二)

    函数传递 举例来说,你可以这样做: function say(word) {      console.log(word);  }  function execute(someFunction, va ...

随机推荐

  1. 奥比中光Astra Pro在ROS系统中的使用

    奥比中光Astra Pro在ROS系统中的使用 上一次介绍了Astra Pro在ubuntu中的使用,由于Astra Pro使用uvc传输彩色图像,所以当用rqt_image_view窗口 时,看不到 ...

  2. Android-Widget桌面小组件

    1, 掌握Widget的用:Widget的用途,能够添加到手机桌面的程序 2, Widget的特点和用法步骤: 特点:快捷,方便,个性化,可自定义功能,可及时控制更新Widget显示内容 3, 用法步 ...

  3. 使用RSA算法对接口参数签名及验签

    在不同的服务器或系统之间通过API接口进行交互时,两个系统之间必须进行身份的验证,以满足安全上的防抵赖和防篡改. 通常情况下为了达到以上所描述的目的,我们首先会想到使用非对称加密算法对传输的数据进行签 ...

  4. django Paginator 让分页变得完美

    参考大佬地址:https://www.zmrenwu.com/courses/django-blog-tutorial/materials/21/ 类视图 from django.contrib.au ...

  5. sublime text 3 环境设置

    1. 设置build system 环境 tool -> build system -> new build system ,粘贴以下代码并保存 { "cmd":[&q ...

  6. vscode如何使用?常用插件有哪些?

    vscode下载 官网下载:https://code.visualstudio.com/ 一.汉化中文(官方下载默认为英文,英文好的小伙伴可直接跳过这步) 点击插件按钮搜索 Chinese, 在弹出的 ...

  7. urlencode编/解码

    from urllib.parse import urlencode, quote, unquote # urlencode方法参数是字典 body = { "content": ...

  8. 【检测工具】keepalived安装及配置

    一.keepalived安装 keepalived是一个检测服务器状态的脚本,在高可用机制上经常可以看到它的身影. 在Linux中安装keepalived: 1.在网上直接下载相应的压缩包,推荐链接 ...

  9. hostname - 显示或设置系统的主机名

    NAME(名称) hostname - 显示或设置系统的主机名 domainname - 显示或设置系统的NIS/YP域名 dnsdomainname - 显示系统的DNS域名 nisdomainna ...

  10. pandas的基本功能

    一.重新索引 (1)reindex方式 obj = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4]) print(obj) obj.re ...