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 ...
随机推荐
- 1.MySQL的基本使用
数据库的操作: 1.Windows中如何使用CMD进入MySQL数据库: 1 Windows+R --> 输入 cmd 运行 2 C:\Users\***>D: ...
- 爬虫五之Selenium
Selenium 自动化测试工具,支持多种浏览器: 爬虫中主要用来解决JavaScript渲染问题. 用法详解 基本使用 声明浏览器对象 from selenium import webdriver ...
- Hand on Machine Learning第三章课后作业(1):垃圾邮件分类
import os import email import email.policy 1. 读取邮件数据 SPAM_PATH = os.path.join( "E:\\3.Study\\机器 ...
- Linux-usermod:增加已建立用户的用户组
usermod --help -g, --gid GROUP force use GROUP as new primary group -G, --groups GROUPS new list of ...
- 教你用 Netty 实现一个简单的 RPC!
众所周知,dubbo 底层使用了 Netty 作为网络通讯框架,而 Netty 的高性能我们之前也分析过源码,对他也算还是比较了解了. 今天我们就自己用 Netty 实现一个简单的 RPC 框架. 1 ...
- css overflow规定元素溢出框将会发生什么
- Linux端口是否占用的方法
1.netstat或ss命令 netstat -anlp | grep 80 2.lsof命令 这个命令是查看进程占用哪些文件的 lsof -i:80 3.fuser命令 fuser命令和lsof正好 ...
- springboot项目抓数据后优化配置及四个补充
昨天搞了一个抓取某某平台信息的抓取功能,其中有一个地址url,昨天是写死的,之前也进行配置过,印象有些模糊,今天想配置一下,在properties文件中,由此引发了下面的一系列总结操作: 1.原始模式 ...
- Core Graphics绘图
首先了解一下CGContextRef: An opaque type that represents a Quartz 2D drawing environment. Graphics Context ...
- 2019-11-29-C#-序列类为-xml-可以使用的特性大全
title author date CreateTime categories C# 序列类为 xml 可以使用的特性大全 lindexi 2019-11-29 8:59:2 +0800 2018-6 ...