zhuhuiwen Front-end Dev Engineer

nodejs-day02

2017-01-11

不错的网站

  1. gitbook

后台

  1. 一般是看不出来后端使用的什么语言
  2. 分成了三层了
    1. 前端–nodejs–后端 比如天猫
  3. 用java的
    1. 前端已jsp结尾的,就直接是java后台的
    2. 前端+java后端的
  4. node是js的一个运行的环境
    1. node是技术,js是一门语言
    2. chrom v8
    3. nodejs 特点
      1. 异步+
    4. 运行在什么平台
    5. path 把某一个文件夹配置到路径中,在终端可以去找到这个文件
    6. repl 交互式运行环境,就是类似在chrome运行 和 dom 执行node > 状态是一样的
      1. 作用:测试一下新的语法
      2. 两次ctrl+c退出
    7. require + exports + module exprots
    8. npm nrm nvm

1.5global

  1. __dirname和__filename
  2. 当前__dirname所在的文件的路径
  3. 当前__filename所在的文件的全路径+当前的文件名

读文件fs.readFile(‘’,’utf8’,callback)

  1. 异步的
  2. file system文档
  3. readFile
  4. 引入fs模块,直接用名字的方式引入
  5. 读文件的方法
    1. fs.readFile(‘’,’utf8’,callback)
      1. 第一个参数是路径
      2. 第二个参数使用utf8的编码格式
      3. 第三个参数是回调函数,回调函数中有两个参数
        1. err
          1. 错误对象
          2. 如果没有错误 err打印出来是null
        2. data
          1. 读取文件的内容
          2. 如果已经err了,data打印的是undefiend
    2. 代码

	//异步的读取文件
	//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);

  1. 注意
    1. 如果不throw的话,下面的代码会继续执行
    2. 抛出的话,被截断

      同步的写法

  2. 同步的写法,比异步的多一个Sync
    1. var data = fs.readFileSync('','utf8');

使用场景

  1. 场景一
    1. 在加载文件的时候,被加载的文件要写绝对路径
    2. 代码

	/*
	需求:
	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模块的种类

  1. 在nodejs中,模块分为两类
    1. 第一类,核心模块(原生模块),node自带,用名称直接可以加载
      • 核心模块
        • fs file system 文件系统
        • http 制作网站的
        • os 获取电脑信息
        • path 路径拼接用的
        • query
        • url
        • ….
    2. 第二类,文件模块,用路径加载,有一种特殊的文件模块–>包

模拟require

2.3 require参数解析

  • 加载
    • require(‘./foo.js’)
    • require(‘fs’)
  • 标识符中可以不可包含扩展名
    • Node会按照’.js、.node、.json’的次序补足扩展名,依次尝试
    • 注意点
      • .js可以不写,.json要写,为了节省系统资源 1/12/2017 11:43:10 AM

        3.包

  • 还有一种特殊的文件模块,其实就是包
  • 问题
    • 你开的一个功能模块,还是以文件的形式散列的,你给别人使用的时候很麻烦
  • 包的作用
    • 在模块的基础上进一步组织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中也进行暴露
  • 使用
    • 将真整个包引导别人的包中
    • 在包外面套一层node_modules文件夹
    • 新建index.js

            var cal = require('cal');//直接进行写模块的名字
        		console.log(cal.add(8,0));//8
      
  • 包的寻址
    • 沿着自己的目录向上找,知道找到根目录
    • 不可以串进别人的目录
  • npm
    • npm2的特点,树形的结构去找,有可能会重复,父子引同一包
      • 级别的目录比较深
    • npm3的特点,将包放在同一级目录下
      • 将树的结构拍平了

语义化版本号

  • 1.2.3 这种版本号的定义叫语义版本号
    • 3表示补丁包版本更新(补丁包版本更新)
    • 2表示向下兼容性版本更新
    • 1重大版本更新

npm让你的开发模式工程化,都依靠工具来管理

  1. 06testPjson文件夹
    1. 找当前目录的package.json
    2. 执行npm install
    3. 去找 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


Similar Posts

上一篇 nodejs-day01

下一篇 nodejs-day03

Comments