node.js入门学习(六)--express
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的更多相关文章
- node.js入门学习(一)环境安装,REPL,fs模块,path模块,http模块
一.node.js介绍 1.1.node.js是什么 官网首页总结:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时. 1)node.js是一个开发平台,就像j ...
- Node.js入门学习笔记(一)
先来个最常见的"Hello World!". 打开你最喜欢的编辑器(我用的是Sublime Text),创建一个helloWorld.js的文件.我们要做的就是向stdout输出& ...
- node.js入门学习(四)--Demo图书的增删改查
需求:图书的增删改查,图书数据保存在data.json文件中. 1.Demo结构: 2.首先下载安装node.js,配置环境变量:参考博客 3.项目初始化 1)创建项目根目录node-hello,进入 ...
- Node.js入门学习笔记(三)
基于事件驱动的回调 这个问题不好回答,不过这是Node.js原生的工作方式.它是事件驱动的,这也是它为什么这么快的原因.你可以花一点时间阅读一下Felix Geisendörfer的大作 Unders ...
- node.js入门学习笔记整理
(1)node Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node与javaScript的区别在于,javaScript的顶层对象是window,而no ...
- node.js入门学习(五)--Demo模块化改造
1.node.js中模块的分类 1)node.js内置模块(核心,原生) 所有内置模块在安装node.js时就已经编译成二进制文件,可以直接加载运行(速度较快),部分内置模块,在node.exe这个进 ...
- node.js入门学习(三)--npm
一.npm介绍 1)npm:node package manager是node.js默认的以js编写的软件包管理系统 官网:www.npmjs.com 文档:docs.npmjs.com 2)提到np ...
- node.js入门学习(二)MIME模块,request和response对象,demo之不同url请求不同html页面,页面包含图片、样式css等静态资源
一.构建http服务程序-根据不同请求做出不同响应 // 加载http模块 var http = require("http"); // 创建一个http服务对象 http.cre ...
- Node.js入门学习笔记(二)
函数传递 举例来说,你可以这样做: function say(word) { console.log(word); } function execute(someFunction, va ...
随机推荐
- centos8飞行驾驶舱和docker安装
零.先解决cenos8的网络(systemctl restart network.service已被废弃) 1.# vim /etc/sysconfig/network-scripts/ifcfg-e ...
- 20191224 Spring官方文档(Overview)
Spring框架概述 从Spring Framework 5.1开始,Spring需要JDK 8+(Java SE 8+),并提供对JDK 11 LTS的现成支持.建议将Java SE 8更新60作为 ...
- xmake从入门到精通9:交叉编译详解
xmake是一个基于Lua的轻量级现代化c/c 的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 除了win, linux, macOS平台,以及an ...
- Nginx_Ubuntu
一. 基本步骤 1.1 环境准备 开始前,请确认gcc g++开发类库是否装好,默认已经安装. 注: 等待linux下载更新功能准备好了 重启系统 在执行下载安装命令,如执行命令没有问题可以继续往下走 ...
- RPC架构下org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
一.调用后台接口报错 网上有很多作者列出大部分原因: 1.实体类名对应配置文件名或者路径不一致 2.spring扫描路径不全 但是本人使用的是mtbatis逆向工程生成的实体类.接口与配置文件,所以不 ...
- Being a Good Boy in Spring Festival
Being a Good Boy in Spring Festival Problem Description 一年在外 父母时刻牵挂春节回家 你能做几天好孩子吗寒假里尝试做做下面的事情吧 陪妈妈逛一 ...
- js知识点——2之navigator
navigator(领航者) 1.appCodeName(返回浏览器的代码名) var x= navigator; document.write("CodeName:"+x.app ...
- Quatrz + Spring
实例工程结构: 配置: pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...
- 剑指offer-顺时针打印矩阵-数组-python
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...
- java 导出自定义样式excel
由于项目需要 要求导出一个这样的表格 然而 正常导出的表格都是这样婶儿地 这种格式网上demo有很多就不详细说了 ,主要说说上面三行是怎么画的. 第一行大标题,是9行合并成的一行,而且字体大小需要单独 ...