nodejs抓取动态网页(ES6ES6模块的只读代码和javascript的区别?模块)
优采云 发布时间: 2022-02-10 10:12nodejs抓取动态网页(ES6ES6模块的只读代码和javascript的区别?模块)
安装node,百度查,node -v查询版本
node.js 和 javascript 之间的区别
es
定义了语法,js和nodejs都要遵守
不能操作dom,不能*敏*感*词*click,不能发送ajax
js
使用es语法,外加webAPI,可以操作dom,事件绑定,ajax等
nodejs
使用es语法,外加nodejsAPI,处理htpp,处理文件等
commonjs 模块化,node.js 使用了这种模块化
一个.js
function add(a, b) {
return a + b
}
function mul(a, b) {
return a * b
}
module.exports = {
add,
mul
}
b.js
const { add, mul } = require('./a')
const _ = require('lodash')
const sum = add(10, 20)
const result = mul(100, 200)
console.log(sum)
console.log(result)
const arr = _.concat([1, 2], 3)
console.log('arr...', arr)
npm init 初始化,运行,节点 b.js
CommonJS 模块和 ES6 模块 CommonJS 的区别在于基本数据类型的复制。将被模块缓存。同时,该模块输出的变量可以在另一个模块中重新赋值。对于复杂的数据类型,它是一个浅拷贝。由于两个模块引用的对象都指向同一个内存空间,所以改变这个模块的值会影响到另一个模块。当使用 require 命令加载模块时,会运行整个模块的代码。当使用 require 命令加载同一个模块时,该模块不会被执行,而是会检索缓存中的值。也就是说,CommonJS 模块无论加载多少次,第一次加载时只会运行一次。如果稍后加载,它将返回第一次运行的结果,除非手动清除系统缓存。当循环被加载时,它属于加载时执行。也就是当需要脚本代码的时候,都会全部执行。一旦一个模块被“循环加载”,只会输出执行的部分,不会输出未执行的部分。ES6 Modules ES6 模块中的值属于[Dynamic Read-Only References]。对于只读,即不允许修改导入变量的值。导入的变量是只读的,无论是基本数据类型还是复杂数据类型。当模块遇到导入命令时,会生成一个只读引用。当脚本实际执行时,根据这个只读引用,去加载的模块获取值。对于动态,原创值发生变化,导入加载的值也发生变化。无论是基本数据类型还是复杂数据类型。ES6 模块在循环加载时被动态引用。只要两个模块之间有一些引用,代码就可以执行。
默认导出 export default 变量或者函数或者对象
默认引入 import name from "相对或绝对路径"
导出的名字和引入的名字可以不一致
按需导出 export 需要声明 变量用const var let 函数用function
按需引入 import {变量名或函数名} form "路径"
全部引入 使用 import * as 自定义name "路径"
会将默认导出和按需导出 全部引入
服务器开发和前端开发的区别
1.服务稳定,服务端可能遭受恶意攻击
2.日志记录,单个客户端可以意外挂掉,但是服务端不行,pm2正在等待进程
3.内存优化,服务器端承载很多请求,CPU和内存都是稀缺资源,用stream写日志,用redis存储session
4.安全,服务器端可能会受到恶意攻击,未经授权的操作,数据库攻击,防止xss攻击,spl注入
5.集群和服务拆分,扩大服务和机器拆分流量
6.日志记录,服务器要记录日志,存储日志,分析日志。