- one
JavaScript 模块化编程
网站越来越复杂,js代码、js文件也越来越多,会遇到什么问题?
1.命名冲突
2.文件依赖问题
什么是模块化
模块化开发演变
全局函数
- 命名冲突
- 文件依赖的问题
对象封装
- 用命名空间的方式进行封装
- 先约定命名的规范的形式
- 对象里面的属性和方法很容易被修改掉,很不安全
划分私有空间
-通过匿名函数自执行的方法封装模块, -可以保护私有变量和方法
模块的维护扩展
- 开闭原则,对修改关闭,对扩展开放。
- 增加了代码的健壮性和容错性
模块的第三方依赖
- 模块职责唯一性
- 把依赖的模块,通过依赖注入的形式,在你的参数上进行体现。
总结
- 最大的问题,规范的问题
- 如果在多人协作开发过程中,会有很大的问题
- 多人协作开发过程中:代码的风格一定要统一
模块化规范
服务器端模块化规范
浏览器端模块化规范
- AMD
- RequireJS
- CMD
- SeaJS commonjs
- node.js
SeaJS
基本使用
整体感知
定义模块 define
- 定义模块 define(function(){})
- 函数体内的方法属性都属于这个方法,对外有封装性;解决了命名冲突问题,使js代码有了封装性
- 直接调用 jQuery 插件等非标准模块的方法 http://my.oschina.net/briviowang/blog/208587
启动模块 seajs.use
- 加载入口模块,我们把define定义的js就叫模块
- 这个用于在html代码里面的加载
加载模块 require
-加载文件依赖、模块依赖的,用于define函数体内
暴露接口 exports 和 module.exports
- module.exports曝露出一个完整的对象,只能扔一次只能曝露出来一个
- exports是module.exports的别名,可以用来单个属性、方法、对象的曝露,用.的形式,exports能做的事情module.exports也可以做
- 使用场景用.属性的形式曝露属性和方法的时候,而且是多个的时候用exports
- module.exports直接等于的方式用,直接等于一个方法属性对象等等~~~ ##requirejs 与seajs的区别 requirejs是优先加载的 seajs是懒加载的,就是有拖延症,用的时候才加载 http://www.requirejs.cn/
2. two
-
程序中的模块化
- 开发效率高 一次编写多次使用
- 方便维护了(维护的成本更低)模块之间有高耦合低内聚的特点
-
为什么要在 程序 中使用 模块化的开发方式
- 命名冲突
- 文件依赖
SeaJS
的使用
- 定义模块
define
作用域就在define的函数体里,三个参数require、exports、module - 加载模块
require
- 在一个模块系统中,
require
加载过的模块会被缓存 - 默认
require
是同步加载模块的
- 在一个模块系统中,
- 暴露接口
exports
和module.exports
exports是module.exports的别名,exports能做什么,module.exports就能做什么 - 启动模块系统
seajs.use(callback)
- seajs.use 和 Document 的 ready 没有任何关系
- 要想保证 文档结构加载完毕再执行你的 js 代码,一定要在 seajs.use 内部通过 window.onload 或者 $(function(){})
- 分清楚前台模块化和node中的模块化的区别
- 掌握模块化的思想
##1.解决几个问题? ###1.前端、后端都是干什么的? 前端 做静态资源的 后端 操控服务器的硬件的
国内一些创业公司用用的比较多,功夫熊(做上门保健的,美甲、按摩) 国外的一些大公司都有使用:Facebook、Twitter、Google 国内的一些大公司:Alibaba(天猫所有的页面都是通过Node提供的服务)、Tencent、Baidu
4.js开发 ###3.什么是JavaScript? 一门脚步语言 需要嵌入html执行
###4.浏览器中的JavaScript可以做什么? 校验表单 操作dom 等等
###5.浏览器中的JavaScript不可以做什么? 操作服务器硬件
###6.浏览器与JavaScript是什么关系? 浏览器解析js,目的是为了让计算机能看懂js,看懂01010101,机器码、字节码 编译
内核-->js引擎
引擎 1.转化 汽油柴油等等->转化->成动能 模板+数据--->页面 js代码--->机器码\字节码 2.移植性 js引擎套一个壳子,写js代码传给js引擎,操作硬件 node.js v8引擎去解析js
###7.JavaScript只可以运行在浏览器中吗?
##什么是 Node?
- https://nodejs.org/en/
- node是js运行环境基于v8引擎 特点用事件驱动、无阻塞的io模型 优势轻量、高效
- node是门技术不是语言 java java .net c# node js
- Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
- JavaScript runtime JavaScript 运行时
- Chrome's V8 JavaScript engine Chrome 浏览器 V8 引擎
- Node.js 是一个 构建于 谷歌的 Chrome 浏览器的 V8 引擎之上的一个
JavaScript运行时
环境 - Node.js可以解析和执行 JavaScript 代码
- Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.
- event-driven 事件驱动模型
- non-blocking I/O model 非阻塞IO模型 IO(input/output)输入与输出
- lightweight[ˈlaɪtweɪt] 轻量级
- 在软件开发行业中,轻量级标识褒义词
- 轻量级也就意味着 运行速度快
- 轻量级也就意味着有更好的 跨平台 特性(平台的差异性,兼容性)
- efficient[ɪˈfɪʃnt] 高效的
- Node.js的 事件驱动和非阻塞IO模型使得Node.js本身非常的轻量和高效
- Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
- package ecosystem npm 包生态系统 npm
- largest 最大的
- open source libraries 开源库
- 理论意义上 开源就表示有成熟的社区,开放源代码
- Node.js 的npm包生态系统,是世界上 最大的 开源库 生态系统
- 以前的 客户端中 JavaScript 库 散列在互联网的各个地方
- npm 就是 把大家经常使用的一些开源库 给 组织到了一起
Node 是一个可以解析和执行 JavaScript 代码的 运行时环境
- Node.js 的作者
- 瑞恩.达尔
Node 的实现结构
- V8 JavaScript 解析执行引擎 ECMAScript
- 中间层 (提供了文件操作、网络操作登陆接口)更加接近操作系统的接口供开发人员使用
- 硬件层
安装与配置
3m安装法 nvm npm nrm
安装包的方式安装
- 问题1:安装了node 没有卸载 2:32和64搞混了 3:;拼写错误,路径错误
- 下载地址:
- 一路下一步 next
- 如何确认是否安装成功:
win + r
,然后输入cmd
,然后敲回车 就可以进入 cmd 控制台
nvm 安装和管理我们的 Node.js版本
nvm的安装方式,node.js version manager 是一个node的版本管理工具
为了解决node版本切换问题
右键在此电脑上点击一下--》属性---》系统---》高级系统设置---》环境变量
控制面板---》系统---》高级系统设置---》环境变量
NVM_HOME---C:\dev\nvm
NVM_SYMLINK--C:\dev\nodejs
新建一个path %NVM_HOME%;%NVM_SYMLINK%
nvm 用法 查看版本号 nvm list 用哪个版本(已经下载过的版本) nvm use 版本号 nvm use 版本号 32 下载相对应版本 nvm install 版本号 nvm install 版本号 32
nvm下载的是二进制版本
## 控制台基本使用
允许用户可以在终端命令台中与操作系统交互,其实就是输入与输出
### 如何打开cmd
1. 通过 按 window 键,输入 `cmd` 打开cmd程序
2. 通过 `win+r` 输入 `cmd`,敲回车就可以进入
### 基本命令
- `dir` directory 列出当前目录下所有的条目
+ 别名 `ls` 在 powershell 中可以使用
- `cd` change directory 切换目录
切换到当前目录下的 Desktop 目录 当想切换到当前目录的时候,最好使用 cd ./ 相对路径的形式 C:\Users\iroc>cd Desktop C:\Users\iroc\Desktop>
在Windows 上切换盘符: d:
切换绝对路径之后再同一个盘符下才有效
切换到上一级目录 C:\Users\iroc\Desktop\code\seajs>cd ../ C:\Users\iroc\Desktop\code>
连续进入多级目录 C:\Users\iroc\Desktop\code>cd seajs/a C:\Users\iroc\Desktop\code\seajs\a>
- `cls` clear screen 清屏
+ 别名 clear 在widnows中的 `powershell` 中可以使用
windows下的寻址用\反斜杠
### path 环境变量
目的是为了在控制台中的任何目录都可以快速打开或者使用该可执行文件
环境变量就是用来存储系统级别的变量
- 添加环境变量
+ 我的电脑 -> 右键选择属性 -> 高级系统设置 -> 切换到`高级`面板 -> 环境变量
+ 第一种方式:直接把可执行文件所属的目录 放到 PATH 环境变量中(如果没有PATH环境变量,自己新建)
+ 第二种方式:新建一个环境变量,变量名规范:逻辑名_HOME 变量值:该可执行文件所属的目录
+ 注意:无论是直接添加的路径还是引用的变量名,一定要用 英文的分号 区分开
+ 引用变量名的时候,变量名两边都是 `%`
`> qq`
当你在控制台中输入一个程序的名字的时候,cmd 默认把它当成一个可执行文件去执行了,
优先找当前目录下是否有没有一个叫做qq.exe 的可执行文件,如果有,直接执行打开
如果没有,cmd会进入 path 环境变量中 一个目录一个目录的挨着查找里面是否有该可执行文件
## REPL(Read-eval-print-loop) 运行环境
用来测试一下代码的,repl和chrome的控制台很像
- 通过在控制台中输入 `node` 敲回车就可以计入 REPL 运行环境
- 通过在REPL运行环境中 连续按两次 `Ctrl+C` 就可以退出 REPL 运行环境
## 执行js文件
用node执行js文件,文件在当前目录下---->node +文件名
如果不在当前目录下,node +文件路径的形式执行
相对路径
./当前路径
../上级目录
绝对路径执行js的方式
node c:\Users\cena\Desktop\code\01helloworld.js
## Global
global和window很像,都是全局对象
## CONSOLE
断言 是用来测试用的 断言就是假定一个条件,如果条件成立则不输出任何内容,如果条件不成立则报错还要输出想要输出的内容。 console.assert(条件,条件不成立输出的内容); var foo=3; console.assert(foo==3,"失败"); time() timeEnd()成对出现,计算在两个方法中间的代码的运行时间,传入的参数要一致 console.time('test');
console.timeEnd('test1');
### __dirname 和 __filename
__dirnamee 用来找到当前文件夹的路径
__filename 用来去到当前文件的路径
不知道代码要才哪使用的时候,用于灵活的写代码取路径的时候。
它们属于模块作用域,可以直接使用
它们两个用来获取路径的,一般用于操作文件路径的时候,才会用到
## process
process 是一个全局可用对象,用来和我们现在启动中的node进行交互的
process.version取版本号
在控制台做标准输出
process.stdout.write(`123123`);
process.pid:当前进程的进程号。
process.version:Node的版本,比如v0.10.18。
process.platform:当前系统平台,比如Linux。
process.env:指向当前shell的环境变量,比如process.env.HOME。
process.stdout:指向标准输出。
process.stdin:指向标准输入。
process.stderr:指向标准错误。
## 模块系统
## node.js模块化
一个js文件在node里面我们就理解为一个模块 require用来加载模块 module.exports用来曝露属性和方法的,因为模块有封装性,需要打破封装性曝露方法和属性来 exports是module.exports的别名,exports可以做的事情,module.exports都可以做,exports只能用.的形式曝露属性和方法
**3.three**
## 1.1 概念
- Node.js与JavaScript的关系?
- Node.js基于哪个JavaScript引擎?
- Node.js的特点?
- Node.js只能运行在Windows上吗?
## 1.2 cmd
- cd(change directory)切换目录
- md(make directory)新建目录
- rd(remove directory)删除非空目录
- dir(directory)查看目录中的条目
` ls linux`
- ren(rename)重命名文件
- del(delete)删除文件
- cls(clear screen)清屏
`clear linux`
## 1.3 path 环境变量
- path环境变量的作用是什么?
- 在Windows中配置path环境变量的方法是什么?
## 1.4 REPL(Read Eval Print Loop)交互式运行环境
- 作用:一般来说,可以用来做一些API的测试
- 进入REPL运行环境
- 退出REPL运行环境
## 1.5 Node.js基础知识
- 如何让Node.js执行一个js文件
`node 文件名`
-绝对路径和相对路径
`.\或者..\ 相对路径`
`c:/xx/xx.js绝对路径`
`\ linux 根目录
windows 盘符的根目录`
## 1.6 globals
- global
- \__dirname和__filename
` 关于这俩家伙,一般在读取文件的时候,最好使用绝对路径的方式,通过这俩家伙拼接 `
- console
+ assert(foo==1,"失败");断言
+ time('timer')
+ timeEnd('timer')
+ 成对的出现
## 1.7 模块系统
- 什么是模块
`一个文件就是一个模块 `
- 模块作用域
`在一个模块内变量、函数、对象都属于这个模块,对外是封闭的。 `
- require
`require("路径")`
//路径现阶段使用相对路径
- exports
`是module.exports的一个别名、引用,exports能做的module.exports都可以完成。`
- module.exports
`最终曝露出去的对象,想曝露出去对象、属性、方法就挂载到module.exports`
#2.模块系统
##2.1模块的种类
在Node.js中,模块分为两类:
第一类,核心模块(原生模块),node自带,用名称直接可以加载。
- 核心模块
- fs file system
- http
- os
- path
- querystring
- url ... 第二类,文件模块,用路径加载,有一种特殊的文件模块----->包,可以用名字。
module 是一个全局对象,它的作用是存储模块信息的,每一个js是一个模块,每一个模块里面都有一个module,module里面还存储了父子结构
直接给module.exports赋值,exports是无效,用属性的形式去赋值的时候二者都有效
## 2.2 优先从缓存加载
common.js规范----->加载后,再次加载时,去缓存中取module.exports
## 2.3 require参数解析
核心模块是Node.js原生提供的加载核心模块的时候, 不需要传入路径,因为Node.js已经将核心模块的文件代码 编译到了二进制的可执行文件中了 在加载的过程中,原生的核心模块的优先级是是最高的
![Alt text](./pic/image1.jpg)
- ./或../开始的相对路径文件模块
``` 在加载一个自己编写的模块的时候,最好使用__dirname 和 你要加载的模块的文件名拼接 ```
- 以/开始的绝对路径文件模块
- 在Linux或者MAc的操作系统中,/表示系统的根路径
- 在Windows中,/表示当前文件模块所属的根磁盘路径 不建议使用,了解
- 标识符中可以不包含扩展名
+ Node会按照`.js、.node、.json`的次序补足扩展名,依次尝试
不包含扩展名的时候,Node.js会按照 路径.js 以后自己在加载js文件模块的时候,就省略掉.js后缀就可以了 路径.node 后缀为node的文件是c/c++写的一些扩展模块 路径.json 如果是加载json文件模块,最好加上后缀.json,能稍微的提高一点加载的速度 .json文件最终Node.js也是通过fs读文件的形式读取出来的,然后通过JSON.parse()转换成一个对象
Node.js会通过同步阻塞的方式看这个路径是否存在
依次尝试,直到找到为止,
如果找不到,报错
- require 加载包的时候
直接写包名,先在包内的node_modules, 目录下查找,去父级目录下的node_modules目录下查找, 依次向上查找,直到根目录。
[参考文献](http://www.infoq.com/cn/articles/nodejs-module-mechanism/)
# 3.包
还有一种特殊的文件模块,其实就是包
- 问题:你开的一个功能模块,还是以文件的形式散列的,你给别人使用的时候很麻烦。
- 包的作用:在模块的基础上进一步组织JavaScript代码
## 3.1 包的组成
- 包结构
- 包描述文件package.json
+ 描述你的当前的包的一些相关的信息
+dependencies
- 包名:“版本号”
- > +版本号 下载大于某个版本号,npm会下最新版
- < +版本号 下载小于某个版本号,npm会下小于这个版本号最新版
- <= 小于等于 一定会下你写的这个版本,除非没有你写的这个版本
- >= 大于等于 下载最新版
- *、" "、X 任意 npm会给你下最新版
- ~ +版本号 会去下约等于这个版本的最新版,在大版本不变的情况下下一个比较新的版本
- ^ +版本号 不跃迁版本下载,^2.1.0 npm会下载大版本不变,去下载2.x.x版本里的最近版
[参考文献 package.json全字段解析](http://blog.csdn.net/woxueliuyun/article/details/39294375)
##
npm install -g fast-init
## 3.2 package.json
包的描述文件
package.json文件内部就是一个JSON对象,该对象的每一个成员就是当前项目的一项设置,
比如name就是项目名称,version就是项目的版本号
在模块的加载机制中,有一个main属性是非常重要的,它很大意义上决定了包要导出的模块位置
## 3.3
# npm
- 基于Node.js开发的包的托管网站
- Node.js包管理工具
npm :基于包的规范实现的一个包管理工具
- npm install 包名
当执行npm install的时候,它会自动跑到npm的网站,然后找到该包的github地址,
找到之后,下载这个压缩包,然后在执行npm install的当前目录下找一个叫做node_modules目录
如果找到,直接解压这个压缩包,到node_modules目录下
如果找不到,则新建一个node_modules目录,解压到该目录
- npm install -g 包名
表示全局安装
npm在安装的时候,在全局设置了一个安装目录,只要是全局安装就会把包安装到这个目录里面去
npm install -g 包名 只要是全局安装就是安装命令行工具
- npm install 缩写 npm i
当执行npm install的时候,会自动在当前目录中查找package.json文件
如果找到,找里面的 dependencies 字段,安装该字段中所有依赖的项
- npm docs 包名
通风这个命令打开 包相对应的文档
- npm install --save 生产环境
npm i -S jquery@3.*
咱们以后在做项目的时候,先初始化一个package.json文件,
在安装第三方包依赖的时候,必须使用npm install --save express,添加依赖项到package.json文件中,
实际就是添加到dependencies字段中
- npm install -save-dev 开发环境
npm i -D jquery@3.*
咱们以后在做项目的时候,先初始化一个package.json文件,
在安装第三方包依赖的时候,必须使用npm install --save express,添加依赖项到package.json文件中,
实际就是添加到devDependencies字段中
- npm config set prefix 修改全局安装目录
不建议使用,建议去文件夹里面改 C:\Users\用户名 里面有一个 .npmrc文件
去里面改prefix = C:\dev\npm (写你的路径)
去全局的环境变量path里把C:\dev\npm 路径加进去
[参考文献 npm的命令](https://docs.npmjs.com/)
# npm 这种东西的最终的目的就是:让你的开发模式工程化,都依靠工具来管理
# nvm npm nrm
## 3m
nvm node版本的管理工具 npm node的包管理工具 nrm npm的数据源管理工具
npm install -g nrm
#4.文件操作
###4.1箭头函数
箭头函数就是一种语法糖 语法糖是一种语法,用这种语法能尝到甜头,能是编程高效 当函数体有一个参数有返回值的时候
var foo=function(v){ return v;} var foo=v=>v; 当函数体没有参数有返回值的时候
var foo=function(){ return v;}
var foo=()=>v; 当函数体有多个参数有返回值的时候
var foo=function(v1,v2){ return v1+v2;} var foo=(v1,v2)=>v1+v2; 当函数体有多个参数没有返回值的时候 var foo=function(v1,v2){ console.log(v1); console.log(v2); } var foo=(v1,v2)=>{ console.log(v1); console.log(v2); };
###4.2文件读写
- fs.readFile() 读文件
fs.readFile(file, [options], callback)
//file 读文件的路径
//options 用[]包裹的可选参数,object {"encoding":"uft8","flag":"r"} string 'utf8'
//callback function callback函数里面有两个参数
//err表示错误对象,如果readFile发生错误了,在callback函数里面会回返回err,err对象里面存着错误信息
//如何读文件成功,err为null
//data就是读文件,读出来的内容。
- fs.access(path,[mode], callback) 用来判断文件是否存在
//path 判断路径是否正确(也可以判断文件)'./pic'
//mode一般不用,默认就可以了,用的话是用来判断文件是否可读可写可执行
//callback 只有一个参数err,错,文件有问题
# 其它
- vsc教程[http://i5ting.github.io/vsc/](vsc教程)
2.npm 和package.json结合着连
npm init 初始化package.json
npm install 先配置package.json里的devDependencies dependencies字段
npm i -S +包名 npm install –save 不光能下载包,还能把依赖添加到package.json
npm i -D +包名 npm install –save-dev 不光能下载包,还能把依赖添加到package.json
npm docs 包名 查看包的相关文件 jquery、mongoose、http-poster
npm list 当前目录有什么包,检测node_modules里面有什么
npm install –g 包名 全局安装 cnpm、nrm
3.cnpm
4.nrm
安装目录npm install -g nrm
nrm ls 查看数据源
nrm test 测试你的网连那个npm的数据源快
nrm use 切换数据源
5.阅读参考文献 朴灵 require
阅读参考文献 package.json全字段解析
6.github
1. **4.four**
## 1.0 nvm常用命令
- nvm项目地址:[nvm-github地址](https://github.com/coreybutler/nvm-windows)
- 查看所有已安装的本地的node版本
`nvm list`
- 切换node版本
` nvm use 版本号`
- 安装指定版本的node
` nvm install 版本号 位数`
- 卸载已安装的指定版本的node
` nvm uninstall 版本号`
###1.1模块的分类
```模块分为核心模块、文件模块,其中包是一种特殊的文件模块 ```
- 核心模块
+ fs file system
+ http
+ os
+ path
+ querystring
+ url
###1.2模块三兄弟 require、module、exports
- require的实现原理
```把代码从文件中读出来,用匿名函数的方式头尾包装,返回modules.exports对象,曝露出想要曝露出来的属性、方法、对象。
补充了exports是指向modules.exports的一个指针,exports能做的,modules.exports都能做的。
- require查找文件、包原理
第二次加载的时候优先从缓存查找读取,
node_modules中没有的,从父文件夹中查找,如果没有,直到根目录为止
- module
里面保存了模块的信息路径、父子信息、曝露出的对象信息
- exports
module.exports 别名
module.exports=123;已经使用过一次了,exports就不生效了
module.exports.a=12;这样使用,exports是还可以使用的
###1.4包
package.json是包的说明书,
dependencies当前包所依赖的包:>、<、>=、<=、~、*、" "、X、^、
devDependencies 开发环境中包所依赖的包:
###1.5npm
npm init 创建package.json文件
npm install 将package.json中的文件依赖的包从网上下载到本地
npm install -save 包名 将包下载下来并且加载到dependencies中去
npm i -S 包名 替代上面的命令
npm install -save-dev 包名 将包下载下来并且加载到devDependencies中去
npm i -D 包名 替代上面的命令
npm install -g 包名 全局安装 安装的是全局工具
npm docs 包名 查看包的文档
###1.6nrm npm的数据源管理工具
nrm ls 查看npm的数据源
nrm use 切换npm下载包的地址
nrm test 测试下哪个数据源快
1.7 3m
npm node的包管理工具 nvm node的版本管理工具 nrm npm的数据源管理工具 ###1.8箭头函数
语法糖替代function(){} v=>v
#2.i/o ###2.1什么是i/o?
io input、output 输入输出,电脑的输入输出,例如音频录音表示声音输入、听音乐是声音的输出
网络上的传输全部是在传字符串,i/o在服务器上可以理解为读写操作。
###2.2什么是并发?
一个时间段中有几个程序都处于已启动运行到运行完毕之间。
#3异步i/o与事件驱动 ###3.1什么是进程?
进程是为运行当中的应用程序提供运行环境的
一个运行当中的应用程序就会有一个进程与之相对应
###3.2什么是线程?
线程是用来运行应用程序中代码的,
一个线程在一个时间只能做一件事件。
多线程,调度起来很麻烦。
node是单线程执行,用异步替代了多线程
###3.3同步、异步有什么不同?
异步不会阻塞后面的代码,同步会阻塞后面的代码
一条线程先执行同步的代码后执行异步的代码。
###3.4异步非i/o操作和异步i/o操作
异步非io setTimeout setInterval
异步IO操作 操作文件 网络操作 fs
###3.5node的事件驱动模型?
###3.5异步和多线程的比较?
node的异步是帮助我们去做了多线程的操作,简化了代码
#4.文件操作 ###4.1文件的完整读写
fs模块---》操作文件---》io----》node的特长
fs模块是node非常重要的模块,能体现出node的优势
- fs.readFile() 读文件
- fs.writeFile() 写文件
- fs.appendFile() 在文件的内部去追加写一些内容
- fs.mkdir() 创建文件夹
- fs.readdir() 读文件夹
- fs.access() 判断路径
- fs.stat() isFile:用于判断被查看的对象是否为一个文件,如果是返回true,否则,返回false; isDirectory:用于判断被查看的对象是否为一个目录,如果是的话则返回true,否则,返回false; isSymbolicLink:用于判断被查看的文件是否为一个符号链接文件,如果是的话则返回true,否则,返回false。该方法仅在lstat方法的回调函数中有效;
#5.异常处理 什么是异常? 计算机不能处理的状况称之为异常 try catch 只能捕获同步异常 try { fs.accessSync('./02sfdasdfio.js'); } catch (err) { console.log("1"+err); } 异步异常对象和被try catch捕获的对象是一样的
#6.path
console.log(path.basename('C:\temp\myfile.html'));
console.log(path.basename('/foo/bar/baz/asdf/quux.html', '.html'));
console.log(path.dirname('/foo/bar/baz/asdf/quux.js'));
console.log(path.extname('/foo/bar/baz/asdf/index.js.css.html'));