前言

  本次记录 Day3 —— Day4

JQuery 的 each 和原生 JavaScript 方法 foreach

each

  结合之前看的 Vue 源码解析,可以知道什么是伪数组了。
  如果用Python来理解的话,伪数组就是一个关键字和数组一致的 字典。
  在 JavaScript 中就是像数组一样调用的对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var fakeArray = {
0:"a",
1:"b",
2:"c",
length:3
}

console.log(fakeArray);
console.log(fakeArray[0]);
console.log(fakeArray['1']);
// console.log(fakeArray.2); 调用会出错
console.log(fakeArray.length); // 英文字符则可以调用
console.log(fakeArray['length']);
// console.log(fakeArray[length]); 调用会出错

[].slice.call(fakeArray)

  js的对象既可以像 python的字典一样通过方括号关键字调用,也可以像 python 的类实例一样通过 . 去调用。

  浏览器提供了遍历标签元素的方法 querySelector ,通过这个查询可以获取元素标签的伪数组。
  进一步要使用foreach需要将对象转换为数组才可以使用。
  转换方法也是通过调用数组的 slice 方法实现。

exports 和 module.exports 的区别

  在 Node 中,每个模块内部都有一个自己的 module 对象
  该 module 对象中,有一个成员叫:exports 也是一个对象
  也就是说如果你需要对外导出成员,只需要把导出的成员挂载到 module.exports 中
  我们发现,每次导出接口成员的时候都通过 module.exports.xxx = xxx 的方式很麻烦,点儿的太多了
  所以,Node 为了简化你的操作,专门提供了一个变量:exports 等于 module.exports

1
2
3
4
5
6
7
8
9
var module = {
exports: {
foo: 'bar',
add: function(){

}
}
}
exports = module.exports

  可以理解每一个js脚本被解析的时候都会提供一将这些代码嵌入到脚本当中
  require执行调用的时候就会获取 module.exports 中的内容
  因此exports变量赋值的时候需要注意,否则很有可能会覆盖掉之前内容。
  一般不推荐使用赋值语句,而是使用成员赋值

export

301 & 302 状态码

状态码

  301 是永久重定向,浏览器会进行缓存,下次进入页面的时候就不再发送请求直接进行跳转。
  302 只是暂时的,每一次访问都会进行请求。

require 加载规则

  如果require两个模块,而第一个模块已经在内部require了第二个模块,这个时候node会从缓存中加载第二个模块而不会重复加载

require 加载规则

  node会根据require的字符串进行加载,如果字符串包含 ./ 等的路径标识符,则根据路径标识查找。
  如果没有包含路径则从核心模块查找。

require 加载规则

require 加载规则

  第三方包的加载方式类似于核心模块,但是命名绝对不会和核心模块一致,否则无法加载。
  加载第三方包是node会从node_module文件夹中查找包的文件夹。
  找到文件夹之后会读取 package.json 的main属性指定的入口js
  如果上述文件不存在或者指定的js有问题,就会读取默认的 index.js
  如果都没有则加载失败。

package.json 包说明书

  npm 安装的时候加入 –save 会将包依赖写入到 package.json 当中
  通过读取 package.json 的依赖就可以重建 node_module
  因此git管理通常都会过滤 node_module 文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"dependencies": {
"gitment": "0.0.3",
"hexo": "^3.2.0",
"hexo-abbrlink": "^2.0.5",
"hexo-deployer-git": "^0.3.1",
"hexo-generator-archive": "^0.1.4",
"hexo-generator-baidu-sitemap": "^0.1.2",
"hexo-generator-category": "^0.1.3",
"hexo-generator-feed": "^1.2.2",
"hexo-generator-index": "^0.2.0",
"hexo-generator-searchdb": "^1.0.8",
"hexo-generator-sitemap": "^1.2.0",
"hexo-generator-tag": "^0.2.0",
"hexo-renderer-ejs": "^0.3.0",
"hexo-renderer-marked": "^0.3.0",
"hexo-renderer-stylus": "^0.3.1",
"hexo-server": "^0.2.0"
}
}

  当你打开 node_module 可能会看到有更多莫名其妙的文件夹,根本就没有写入到 package.json 的依赖当中。
  其实这一点不用担心,我们安装一些常用包的时候,那些包也会依赖其他的包。
  npm会自动下载管理好这一切的问题,因此我们只要有目标包的依赖就可以了,更多的依赖就不用我们操心。
  通过 npm install 就会自动读取 packag.json 的数据自动安装依赖。
  如果我们想要创建 package.json 可以输入 npm init 来生成一个

关于js模块化

关于js模块化