Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:
可以设置中间件来响应 HTTP 请求。
定义了路由表用于执行不同的 HTTP 请求动作。
可以通过向模板传递参数来动态渲染 HTML 页面。
npm install -g cnpm –registry=https://registry.npm.taobao.org
cnpm install express –save
以上命令会将 Express 框架安装在当前目录的 node_modules 目录中, node_modules 目录下会自动创建 express 目录。以下几个重要的模块是需要与 express 框架一起安装的:
body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。
multer - node.js 中间件,用于处理 enctype=”multipart/form-data”(设置表单的MIME编码)的表单数据。
并将其保存到依赖列表中: –save
cnpm install express -g –save
cnpm install body-parser -g –save
cnpm install cookie-parser -g –save
cnpm install multer -g –save
$ ls
client.js node_modules server.js
$ ls node_modules/
_body-parser@1.19.0@body-parser body-parser
_bytes@3.1.0@bytes bytes
_content-type@1.0.4@content-type content-type
$ cnpm list express
/Users/xiazemin/node.js/http/post
└── (empty)
$ cnpm install express –save
✔ Installed 1 packages
✔ Linked 41 latest versions
✔ Run 0 scripts
✔ All packages installed (30 packages installed from npm registry, used 2s(network 2s), speed 147.7kB/s, json 42(105.25kB), tarball 148.8kB)
bogon:post xiazemin$ cnpm list express
/Users/xiazemin/node.js/http/post
└── express@4.17.1 -> /Users/xiazemin/node.js/http/post/node_modules/_express@4.17.1@express
$ npm list -g –depth 0
/usr/local/lib
├── body-parser@1.19.0
├── browserify@17.0.0
├── cnpm@6.1.1
├── cookie-parser@1.4.5
├── express@4.17.1
├── multer@1.4.2
└── npm@7.4.0
$ npm list -g express –depth 0
/usr/local/lib
└── express@4.17.1
$ cnpm list -g express –depth 0
/usr/local/Cellar/node/15.3.0/lib
└── (empty)
bogon:express xiazemin$ npm list -g express
/usr/local/lib
└── express@4.17.1
注意cnpm 和npm的区别
1.全局安装express框架,cmd打开命令行,输入如下命令:
npm install -g express
express 4.x版本中将命令工具分出来,安装一个命令工具,执行命令:
npm install -g express-generator
输入express --version验证
2.如果在执行js文件仍报Error: Cannot find module express错误。
解决办法:
在自己的工程目录下再次执行:
npm install express
The reason for this is that applications always look in their local context for any dependencies. The global installation is only for setting up system-wide available binaries, such as unit test runners or bootstrappers or things like that.
With Express, when you install it globally, you get an express binary that can bootstrap an application for you. For more information, type
$ express –help
So, to answer your final question: YES, you need to install it without -g.
https://stackoverflow.com/questions/17162308/node-js-error-cannot-find-module-express
if your node_modules directory is in another place, set NODE_PATH envirnment variable:
set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%
$ ln -s /usr/local/lib/node_modules $(pwd)
问题解决
https://stackoverflow.com/questions/17162308/node-js-error-cannot-find-module-express
req.path:获取请求路径
req.protocol:获取协议类型
req.query:获取URL的查询参数串
req.route:获取当前匹配的路由
req.subdomains:获取子域名
req.accepts():检查可接受的请求的文档类型
req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages:返回指定字符集的第一个可接受字符编码
req.get():获取指定的HTTP请求头
req.is():判断请求头Content-Type的MIME类型
Response 对象 - response 对象表示 HTTP 响应,即在接收到请求时向客户端发送的 HTTP 响应数据。常见属性有:
res.app:同req.app一样
res.append():追加指定HTTP头
res.set()在res.append()后将重置之前设置的头
res.cookie(name,value [,option]):设置Cookie
opition: domain / expires / httpOnly / maxAge / path / secure / signed
res.clearCookie():清除Cookie
res.download():传送指定路径的文件
res.get():返回指定的HTTP头
res.json():传送JSON响应
res.jsonp():传送JSONP响应
res.location():只设置响应的Location HTTP头,不设置状态码或者close response
res.redirect():设置响应的Location HTTP头,并且设置状态码302
res.render(view,[locals],callback):渲染一个view,同时向callback传递渲染后的字符串,如果在渲染过程中有错误发生next(err)将会被自动调用。callback将会被传入一个可能发生的错误以及渲染后的页面,这样就不会自动输出了。
res.send():传送HTTP响应
res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type
res.set():设置HTTP头,传入object可以一次设置多个头
res.status():设置HTTP状态码
res.type():设置Content-Type的MIME类型
路由
我们已经了解了 HTTP 请求的基本应用,而路由决定了由谁(指定脚本)去响应客户端请求。
在HTTP请求中,我们可以通过路由提取出请求的URL以及GET/POST参数。
app.get(‘/ab*cd’, function(req, res) { });
Express 提供了内置的中间件 express.static 来设置静态文件如:图片, CSS, JavaScript 等。
你可以使用 express.static 中间件来设置静态文件路径。例如,如果你将图片, CSS, JavaScript 文件放在 public 目录下,你可以这么写:
app.use(‘/public’, express.static(‘public’));