ES,js和nodejs区别
- ES是语法规范,没有api只靠它自己什么也做不了(ES文档看阮一峰的书)
- js是ES+web API,可以完成浏览器端操作
- nodejs是ES+node API,可以完成server端操作
nodejs的API文档 - 在nodejs中尽量使用ES6的语法。
commonjs模块化规范
使用模块化的好处:可以对代码进行拆分,将功能相似的代码放在一起,在不同的地方都可以进行直接调用。(类似react.js中的组件)
步骤:
- 在vscode中打开工作文件夹,在vscode终端输入
npm init -y
用于初始化npm环境 - 再输入
npm i lodash --save
用于安装lodash库(其中,lodash是node中常用的数据库) - 在根目录中会出现
package.json
文件,文件内有:(其中,lodash就是依赖的名字)1
2
3"dependencies": {
"lodash": "^4.17.15"
} - 在js文件中引用
const _=require('lodash')
(其中,lodash为package.json
里面的依赖名字) - 一般使用
_
代替lodash
,所以在需要这个库的js文件顶部调用const _ = require('lodash')
即可 - 想要使用该工具库的方法时只需调用
_.方法名
即可,比如:1
2const arr = _.concat([1,2],3)
console.log('arr1',arr)//arr1[1,2,3]
注意:可以直接使用require
调用node自带的库,不需要另外安装或编写代码、输出,比如const http = require('http')
debugge
推荐使用vscode这个IDE作为debug的工具。
- 新建一个目录,然后在该目录下在vscode终端输入
npm init -y
用于初始化npm环境 - 在该目录下会出现一个
package.json
文件,该文件内有"main":"index.js",
也就说明主页面是index.js
,那么你需要保证你的目录下有这个文件,或者可以修改页面名称。 - 在vscode中目录左侧有个虫子图标就是用来debug的,注意点击图标以后出现在目录上方位置的绿色箭头代表“开始debug”
- 注意打断点,可以通过点击来删除断点,删除后可以点击红色方框停止debug。
server端和前端的区别
服务稳定性
server端可能会遭受各种恶意攻击和误操作,单个客户端(前端)可以意外挂掉,但是服务端不能。
CPU和内存的优化、扩展
前端(客户端)独占一个浏览器,内存和CPU都不是问题,但server端要承载很多请求,CPU和内存都是稀缺资源。
优化:使用stream写日志
扩展:使用redis存session
(后面会详细讲解)
日志记录
前端也会参与写日志,但只是日志的发起方,不关心后续。而server端要记录日志、存储日志、分析日志,前端不关心
安全
server端要随时准备接收各种恶意攻击,前端则少很多。
如:越权操作(比如用户想删除别的用户的博客),数据库攻击等。
后面会讲解登录验证,预防XSS攻击和sql注入(XSS攻击前端也有一部分责任)
集群和服务拆分
产品发展速度快,流量可能会迅速增加。server端需要考虑如何通过扩展机器和服务拆分来承载大流量。
module.exports 与 exports
强烈建议使用module.exports = xxx
的方式来输出模块变量,它可以应对任何情况。
具体原因可以参考廖雪峰的博客
区分export
、export default
和module.exports
、exports
- 使用上的不同,可参考《export、export default和module.exports、exports》
- 相同点:文件、变量、函数等导出
- 不同点:
module.exports
、exports
是Common.Js规范;而export
、export default
是es6规范。
module.exports
、exports
- node.js遵循Common.Js规范。
- 推荐使用modules.exports。使用exports可能会有意料之外的错误。
export
、export default
- React遵循es6规范。
- 一个js文件可以有很多个
export,但只能拥有一个
export default`。 - 在React.js中,输出可以使用
export
或者export default
,**建议使用export
**。