一.目录
- require( CommonJS模块 ) 和 import (ES模块) 的区别?
- Restful API 的 :id 是什么意思?
- 项目文件夹下打开终端,输入npm run dev ,同时启动前后端。
二. Q&A
1. require( CommonJS模块 ) 和 import (ES模块) 的区别?
graph TD
Node --> Module
| require/expotrs | import/export |
|---|---|
后端部分( Node.js )用require语法 | 前端部分( 浏览器执行 )用import 语法 |
使用module.exports和exports导出模块 | 使用export和export default导出模块 |
| 运行时动态加载, CommonJS 加载的是一个对象(即 module.exports 属性),该对象只有在脚本运行完才会生成 | 静态编译, ES6 模块不是对象,它的对外接口只是一种静态定义,在代码静态解析阶段就会生成。 |
| 👆因此,必须先引入再使用 | 👆 因此, import 语句可以随意写在被调用语句前后 |
| CommonJS 模块输出的是一个值的拷贝。模块内部值的改变不影响外部文件 | ES6 模块输出的是值的引用。模块内部值的改变影响外部文件 |
用法:exports 是 module.exports 的引用,没有本质区别。※注意导出有 = | export default 导出的模块不用加 { },引入非 export default 导出的模块需要加 {}2. 一个文件只能导出一个 default 模块。※注意导出无 = |
| import/export 不能对引入模块重新赋值/定义 |
相关链接:
require和import的区别 - 知乎 (zhihu.com)
阮一峰 - Module 的加载实现
2.Restful API 的 :id 是什么意思?
graph TD
Node.js --> Express.js
Express.js --> Router设计
一句话概括:将会把:后的名字(key)和实际调用时传入的${}内的数据(value)变成req.params的一个键值对。
调用部分,${ row._id }将成为键值对的 value
API设计,冒号后面的 id 将作为键值对的 key
详见Express.js 官方文档 Route parameters 部分
三.项目文件夹下打开终端,输入npm run dev ,同时启动前后端。
要先安装concurrently这个 npm 包。