不错的网站
后台
- 一般是看不出来后端使用的什么语言
- 分成了三层了
- 前端–nodejs–后端 比如天猫
- 用java的
- 前端已jsp结尾的,就直接是java后台的
- 前端+java后端的
- node是js的一个运行的环境
- node是技术,js是一门语言
- chrom v8
- nodejs 特点
- 异步+
- 运行在什么平台
- path 把某一个文件夹配置到路径中,在终端可以去找到这个文件
- repl 交互式运行环境,就是类似在chrome运行 和 dom 执行node > 状态是一样的
- 作用:测试一下新的语法
- 两次ctrl+c退出
- require + exports + module exprots
- npm nrm nvm
1.5global
- __dirname和__filename
- 当前__dirname所在的文件的路径
- 当前__filename所在的文件的全路径+当前的文件名
读文件fs.readFile(‘’,’utf8’,callback)
- 异步的
- file system文档
- readFile
- 引入fs模块,直接用名字的方式引入
- 读文件的方法
- fs.readFile(‘’,’utf8’,callback)
- 第一个参数是路径
- 第二个参数使用utf8的编码格式
- 第三个参数是回调函数,回调函数中有两个参数
- err
- 错误对象
- 如果没有错误 err打印出来是null
- data
- 读取文件的内容
- 如果已经err了,data打印的是undefiend
- err
- 代码
- fs.readFile(‘’,’utf8’,callback)
//异步的读取文件
//var fs = require('fs');
/**
* fs.readFile(路径,使用utf8的编码格式,回调函数,回调函数中有两个参数)
* 回调函数
* err 错误对象 和 data 是数据
*
*/
/*fs.readFile('./01.__dirnameAND_filename.js','utf8',function(err,data){
if(err){
console.log(err);
}
console.log(data);
})
*/
//同步的读取文件,比异步的多写一个Sync
var fs = require('fs');
var data = fs.readFileSync('./01.__dirnameAND_filename.js', 'utf8');
console.log(data);
- 注意
- 如果不throw的话,下面的代码会继续执行
- 抛出的话,被截断
同步的写法
- 同步的写法,比异步的多一个Sync
var data = fs.readFileSync('','utf8');
使用场景
- 场景一
- 在加载文件的时候,被加载的文件要写绝对路径
- 代码
/*
需求:
1. 去读取foo.js文件的内容
2. 注意点: 进行设置成绝对路径进行读取
*/
var fs = require('fs');
var test = function () {
fs.readFile(__dirname+'/foo.js', 'utf8', function (err, data) {
if (err) {
console.log(err);
}
console.log(data);
})
}
module.exports = test;
2.模块系统
2.1 简单的读文件
fs.readFile() 注意点: __dirname 和 __filename的使用场景
2.2模块的种类
- 在nodejs中,模块分为两类
- 第一类,核心模块(原生模块),node自带,用名称直接可以加载
- 核心模块
- fs file system 文件系统
- http 制作网站的
- os 获取电脑信息
- path 路径拼接用的
- query
- url
- ….
- 核心模块
- 第二类,文件模块,用路径加载,有一种特殊的文件模块–>包
- 第一类,核心模块(原生模块),node自带,用名称直接可以加载
模拟require
2.3 require参数解析
- 加载
- require(‘./foo.js’)
- require(‘fs’)
- 标识符中可以不可包含扩展名
- Node会按照’.js、.node、.json’的次序补足扩展名,依次尝试
- 注意点
- .js可以不写,.json要写,为了节省系统资源
1/12/2017 11:43:10 AM
3.包
- .js可以不写,.json要写,为了节省系统资源
1/12/2017 11:43:10 AM
- 还有一种特殊的文件模块,其实就是包
- 问题
- 你开的一个功能模块,还是以文件的形式散列的,你给别人使用的时候很麻烦
- 包的作用
- 在模块的基础上进一步组织js代码
3.1 包的组成
- 包结构
- 概念
- 包就是一个文件夹,文件夹的名字最好是包名
- 入口文件 (必须的)
- 名字叫index.js(功能小) 或app.js(大的应用,例如网站)
- 包说明文件,不止是给人看的(必须的)
- package.json
- lib文件夹
- 存放js文件的
- bin文件夹
- 二进制文件或是脚本文件
- test 测试文件
- docs 文档放这里
- node_modules
- 如果我需要引用别的包
- 概念
- package.json
- keywords 是上传npm网站上的时候进行的设置网站的关键词
- license ‘MIT’开源协议
- devdependencies:{}依赖的包 开发的
- dependencies 生成的时候需要的
- 例子
- 新建04
- 在文件夹里 npm init
- 直接按照提示进行初始化
- 正常的一路回车去里面改
- index.js
- lib文件夹
- 写js
- 在index中也进行暴露
- 新建04
- 使用
- 将真整个包引导别人的包中
- 在包外面套一层node_modules文件夹
-
新建index.js
var cal = require('cal');//直接进行写模块的名字 console.log(cal.add(8,0));//8
- 包的寻址
- 沿着自己的目录向上找,知道找到根目录
- 不可以串进别人的目录
- npm
- npm2的特点,树形的结构去找,有可能会重复,父子引同一包
- 级别的目录比较深
- npm3的特点,将包放在同一级目录下
- 将树的结构拍平了
- npm2的特点,树形的结构去找,有可能会重复,父子引同一包
语义化版本号
- 1.2.3 这种版本号的定义叫语义版本号
- 3表示补丁包版本更新(补丁包版本更新)
- 2表示向下兼容性版本更新
- 1重大版本更新
npm让你的开发模式工程化,都依靠工具来管理
- 06testPjson文件夹
- 找当前目录的package.json
- 执行npm install
- 去找 dependencies 或是devdependencies(开发的)
- package.json的 - dependencies
- ‘jquery’:’^1.9.*’ 是1确定,后面两个是最新的,控制第一位
- ~1.9.* : 很实用的 进行控制两位 - npm i -S jquery@1.9.1 或是 npm i -D jquery@1.9.1 —–这个还没练
- -S -sava
- npm常用
- npm init 初始化一个package.json
- npm install 安装package.json里面设定好的依赖的包
- …
- npm install -g
- 直接去path配置的环境变量中的npm地址去找了
- npm install 缩写 npm i
- npm docs jquery 直接打开jquery的官方网站
- 不用
- npm install –save 生成环境
- npm i -S jquery@3.*
- 参考文献
- https://docs.npmjs.com/
- 让你的开发模式工程化,都依靠工具来管理
4.文件操作
4.1箭头函数
- codelf起函数名字
- unbug.github.io/codelf/…
- 箭头函数
- 一个参数一个返回值
- var foo=v=>v
- es6里面的语法
- 注意
- 不能用来写构造函数
- 不能写匿名函数
- 注意
1/12/2017 10:48:14 PM
- 本地安装的npm包,可以通过require的方式去加载
- 全局安装的包,怎么去使用???
1/12/2017 11:00:17 PM