Skip to content

Latest commit

 

History

History
66 lines (57 loc) · 3.17 KB

File metadata and controls

66 lines (57 loc) · 3.17 KB

模块路径解析规则

  1. 内置模块
    直接返回内部模块的导出对象,如require('fs')

  2. node_modules目录
    nodejs定义了一个特殊的node_modules目录用于存放模块。如在模块中使用require('foo/bar')方式加载模块时,nodejs依次尝试使用以下路径。
    /home/user/node_modules/foo/bar
    /home/node_modules/foo/bar
    /node_modules/foo/bar

  3. NODE_PATH 环境变量
    与PATH环境变量类似,nodejs允许通过NODE_PATH环境便利啊个来制定额外的模块搜索路径。NODE_PATH环境变量中包含一个到多个目录路径,路径之间在Linux下使用:分隔。例如定义了以下NODE_PATH环境变量。
    NODE_PATH=/home/user/lib:/home/lib
    当使用require('foo/bar')加载模块时,则nodejs依次尝试以下路径
    /home/user/lib/foo/bar
    /home/lib/foo/bar

  4. 相对路径:./或者../ 表示当前目录或者上级目录
    绝对路径: E:/aa.js或者http:/127.0.0.1/aa.js就代表路径所指向的资源
    盘符路径: 以'/'
    |-- 服务器启动的程序:/代表着项目的根目录
    |-- 代表着当前文件的盘符根目录

模块化

>非模块化演变过程
* 非模块时,写代码需要注意命名冲突的问题、文件顺序依赖的问题。
* 命名空间理论上解决了命名冲突的问题,但是随着项目增多,子文件增多,命名空间会越来越长。而且命名空间的方式可以让外部拿到及修改其所有属性,不安全
* 划分私有命名空间-利用函数的作用域,保护私有成员,对外提供公共的访问方式
>模块化优点
* 易于复用及代码的可维护性

nodejs中模块总体组成

  • 自定义模块
  • 第三方模块
  • 核心模块 nodejs 默认提供了一些核心模块,实际上也是文件模块,核心模块在源代码进行编译的时候就已经被编译到了二进制的可执行文件中了(加快运行速度)

第三方依赖注入

将第三方包依赖包以自执行函数参数形式注入页面

JavaScript

  • 语法部分 ECMA,描述了js代码应该怎么写
  • DOM 文档对象模型 提供了接口,浏览器为我们实现了document的对象的相关方法
  • BOM 浏览器对象模型 window/navigator/location 浏览器为我们实现相关方法

  • JavaScript运行环境是什么❓
    • 浏览器--JavaScript解析引擎,完成解析,执行代码
  • 浏览器中的JavaScript可以做什么❓
    • 操作dom元素
    • 发送请求
    • 页面动态效果
    • ajax(xmlhttprequest)
  • 浏览器中的JavaScript不可以做什么❓
    • 文件操作
    • 进程操作
    • 数据库的操作(数据的持久化)
    • 不能接收请求、响应请求

chrome 浏览器的实现结构

  • html/css : webkit布局引擎,完成布局和渲染
  • JavaScript: v8解析引擎,解析js代码并执行
  • 中间层:负责调配上下层及硬件层,如网卡/硬盘

node的实现结构

- 区别: nodejs少了DOM/BOM,不必担心界面的问题
- 留下了v8来按照ECAMScript来解析js代码并执行