### 安装 1. 安装express框架和express-generator脚手架 ``` $ npm install express --save -g $ npm install express-generator --save -g ``` 2. 安装完express-generator后就可以使用它创建一个express项目 ``` express "你的项目名" ``` > 部分win10系统可能会提示禁止运行脚本,这是win10执行策略导致,解决办法如下: > 以管理员身份运行 PowerShell,输入 set-executionpolicy remotesigned ,输入 Y 回车 > ![](/static/image/13653457-e7e0199b7c0b5db3.jpg) 3. 安装依赖后就可以直接启动项目了 ``` cd "你的项目名" npm install npm start ``` 启动后打开浏览器输入 //localhost:3000 就可以访问到了 ![图一:项目启动成功](/static/image/13653457-4af68d6bf9c91012.jpg) 项目初始目录结构不算复杂,实际上如果使用过或熟悉vue-cli的朋友应该能很快上手。 > /bin/www:http模块服务配置相关 > /public:存放公共静态文件如图片、js、css > /routes:路由配置 > /views:前端模板文件,如项目运行报错时候填充的html模板 > /app.js:项目入口文件,这个文件会引入express框架和引入路由等 > /package.json:node项目文件,这个文件通常会包含项目依赖、名称、版本、描述、执行脚本命令行缩写等 那么当我们输入 `npm start` 的时候项目是怎么运行的呢? npm start 是一般的项目中都默认带有的启动命令,在 package.json 里面会有配置,能看到 start 字段的value是 node ./bin/www ,意思就是当我们输入 npm start 后会执行 node ./bin/www > `npm start` 相当于简写 npm run start ,同样的能用 npm 简写的还有 `npm stop`、`npm test` 等 ./bin/www 会启动一个 http 服务,默认监听 3000 端口,这也就是我们能够通过 localhost:3000 访问原因。 文件里有一句 `http.createServer(app)` 将 app.js 的导出模块作为该 http 服务 request 事件的监听函数。 而 app.js 则创建了一个 express 实例并导出,也就是刚提到的监听函数。它包含了路由监听和分发、错误捕捉、cookie等。 ![图二:入口文件 app.js](/static/image/13653457-468d4ef196430f33.jpg) 那路由的监听和分发过程是怎么样的呢? 假设我们浏览器地址栏输入 //localhost:3000/users ![](/static/image/13653457-fb70c942435d2e7e.png) 浏览器地址栏发送的是get请求,那么按照 app.js(图二)中的 ```javascript var usersRouter = require('./routes/users'); app.use('/users', usersRouter); ``` 该请求会被分发到了./routes/users 这个路由文件 ```javascript router.get('/', function(req, res, next) { res.send('respond with a resource'); }); ``` 该路由接收一个get请求并最终返回文本 'respond with a resource' > 默认接收函数包含三个参数 > req:即 request,包含了这次请求的参数和header等信息。 > res:即 response,包含了这次响应的信息和方法。 > next: 如果函数中调用了 next() ,则会将这次请求继续交由下一个相匹配的路由控制 > [具体可参考官方文档](http://expressjs.com/en/5x/api.html#req) node.js 基于Google的V8引擎,搭配 express 后对于习惯写 JavaScript 的前端开发者用来做做个人网站或者一些小型项目还是很不错的。

用express搭建一个web服务

1474 15 nodeJs 2020-03-25