diff --git "a/\344\275\225\345\273\272\346\201\222/2.13\357\274\214git\345\210\206\346\224\257/\347\254\224\350\256\260.txt" "b/\344\275\225\345\273\272\346\201\222/2.13\357\274\214git\345\210\206\346\224\257/\347\254\224\350\256\260.txt" new file mode 100644 index 0000000000000000000000000000000000000000..0ce33360d704946bff2582406c6263bb8ea434af --- /dev/null +++ "b/\344\275\225\345\273\272\346\201\222/2.13\357\274\214git\345\210\206\346\224\257/\347\254\224\350\256\260.txt" @@ -0,0 +1,9 @@ +git branch 显示当前分支 +git branch 分支名字 创建分支 +git checkout 分支名字 切换到该分支 + +git add 新增文件进行跟踪 + +commit 和 push 提交跟邱老师之前说的一样 + +记住不能只建立空文件夹,文件夹要有文件 \ No newline at end of file diff --git "a/\344\275\225\345\273\272\346\201\222/2.15\357\274\214node\345\205\250\345\261\200\345\222\214\346\250\241\345\235\227/mod.js" "b/\344\275\225\345\273\272\346\201\222/2.15\357\274\214node\345\205\250\345\261\200\345\222\214\346\250\241\345\235\227/mod.js" new file mode 100644 index 0000000000000000000000000000000000000000..b6bac129cad34c974fc646101a27a7ad80d4d642 --- /dev/null +++ "b/\344\275\225\345\273\272\346\201\222/2.15\357\274\214node\345\205\250\345\261\200\345\222\214\346\250\241\345\235\227/mod.js" @@ -0,0 +1,43 @@ +// 作业:写个加减乘除的模块(尽量少写暴露,要考虑复用性),供外部使用. 作业每个分支要建一个目录(自己名字) +let jieguo; +let obj={ + jia:function(a,b){ + if(Number(a)&&Number(b)){ + jieguo=Number(a)+Number(b); + }else{ + jieguo="输入的两个值必须是数字!"; + } + + return jieguo; + }, + jian:function(a,b){ + if(Number(a)&&Number(b)){ + jieguo=Number(a)-Number(b); + }else{ + jieguo="输入的两个值必须是数字!"; + } + return jieguo; + }, + chen:function(a,b){ + if(Number(a)&&Number(b)){ + jieguo=Number(a)*Number(b); + }else{ + jieguo="输入的两个值必须是数字!"; + } + return jieguo; + }, + chu:function(a,b){ + if(a!=0){ + if(Number(a)&&Number(b)){ + jieguo=Number(a)/Number(b); + }else{ + jieguo="输入的两个值必须是数字!"; + } + }else{ + jieguo="被除数不能为0"; + } + return jieguo; + } +} + +module.exports=obj; diff --git "a/\344\275\225\345\273\272\346\201\222/2.15\357\274\214node\345\205\250\345\261\200\345\222\214\346\250\241\345\235\227/use.js" "b/\344\275\225\345\273\272\346\201\222/2.15\357\274\214node\345\205\250\345\261\200\345\222\214\346\250\241\345\235\227/use.js" new file mode 100644 index 0000000000000000000000000000000000000000..a6ed7d3aade138b3767653fb470eb304dc8061eb --- /dev/null +++ "b/\344\275\225\345\273\272\346\201\222/2.15\357\274\214node\345\205\250\345\261\200\345\222\214\346\250\241\345\235\227/use.js" @@ -0,0 +1,5 @@ +let obj=require('./mod'); +console.log(obj.jia(1,2)); +console.log(obj.jian(8,1)); +console.log(obj.chen(5,2)); +console.log(obj.chu(0,1)); \ No newline at end of file diff --git "a/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/2\346\250\241\345\235\227\344\270\216npm\344\275\277\347\224\250.md" "b/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/2\346\250\241\345\235\227\344\270\216npm\344\275\277\347\224\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..c025a5ffa18912cf192679dd83e08e0d0d3cf904 --- /dev/null +++ "b/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/2\346\250\241\345\235\227\344\270\216npm\344\275\277\347\224\250.md" @@ -0,0 +1,94 @@ +## 什么是模块 + +在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。 + +为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Node环境中,一个.js文件就称之为一个模块(module)。 + +使用模块有什么好处? + +最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Node内置的模块和来自第三方的模块。 + +使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。 + + +#### 简单来说,模块就是把代码分成一个个文件 + + +#### 来个案例 + +```js +//文件 a + +'use strict'; + +var s = 'Hello'; + +function greet(name) { + console.log(s + ', ' + name + '!'); +} + +module.exports = greet; + +//文件 b + + +'use strict'; + +// 引入hello模块: +var greet = require('./a'); + +var s = 'Michael'; + +greet(s); // Hello, Michael! + +``` + +#### 简单说要暴露的使用 module.exports 暴露, 要使用的 require(跟php 类似)引入文件,要注意文件的位置 + + +## 什么是 npm + +npm是什么东东?npm其实是Node.js的包管理工具(node package manager)。 + +为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。 + +更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。 + + +## npm的常用命令 + +2.npm 常用命令 参考 https://www.npmjs.cn/cli/init/ + +npm install //安装 也可简写成 npm i 如何指定版本gulp@3.9.1 + +npm uninstall //移除 + +npm update //更新 npm + 英文 + +npm ls //列出列表 + +npm init //初始化 init 初始化 + +npm run 脚本名 + +npm outdated 检查模块是否已经过时 + +npm root 查看包的安装路径 + +npm version 查看模块版本 + +npm install -g cnpm --registry=https://registry.npm.taobao.org + +npm 的官网 http://npmjs.com/ + +3.package.json 介绍 name 包名 description 包简介 author 作者 version 版本 repository 源码托管地址 maintainers 包维护者列表 cotributors 贡献者列表 dependencies 需要的依赖包列表 devde-- 开发环境需要的包列表 keywords 关键词数组 main 模块的入口文件 scripts 脚本说明对象 + +### 作业:写个加减乘除的模块(尽量少写暴露,要考虑封装),供外部使用. 作业每个分支要建一个目录(自己名字) + + + + + + + + diff --git "a/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/3node\347\232\204\346\226\207\344\273\266\350\257\273\345\206\231\344\270\212.md" "b/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/3node\347\232\204\346\226\207\344\273\266\350\257\273\345\206\231\344\270\212.md" new file mode 100644 index 0000000000000000000000000000000000000000..163c694a445474201b9c17d7c31573a25d2ad392 --- /dev/null +++ "b/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/3node\347\232\204\346\226\207\344\273\266\350\257\273\345\206\231\344\270\212.md" @@ -0,0 +1,162 @@ +#### 文件的读取 + +Node.js内置的fs模块就是文件系统模块,负责读写文件。 + +和所有其它JavaScript模块不同的是,fs模块同时提供了异步和同步的方法。 + +回顾一下什么是异步方法。因为JavaScript的单线程模型,执行IO操作时,JavaScript代码无需等待,而是传入回调函数后,继续执行后续JavaScript代码。比如jQuery提供的getJSON()操作: + +```js + +$.getJSON('http://example.com/ajax', function (data) { + console.log('IO结果返回后执行...'); +}); +console.log('不等待IO结果直接执行后续代码...'); + +``` + + +而同步的IO操作则需要等待函数返回: + +```js + +// 根据网络耗时,函数将执行几十毫秒~几秒不等: +var data = getJSONSync('http://example.com/ajax'); + +``` + +同步操作的好处是代码简单,缺点是程序将等待IO操作,在等待时间内,无法响应其它任何事件。而异步读取不用等待IO操作,但代码较麻烦。 + +```js + +'use strict'; + +var fs = require('fs'); + +fs.readFile('sample.txt', 'utf-8', function (err, data) { + if (err) { + console.log(err); + } else { + console.log(data); + } +}); + +``` + +请注意,sample.txt文件必须在当前目录下,且文件编码为utf-8。 + +异步读取时,传入的回调函数接收两个参数,当正常读取时,err参数为null,data参数为读取到的String。当读取发生错误时,err参数代表一个错误对象,data为undefined。这也是Node.js标准的回调函数:第一个参数代表错误信息,第二个参数代表结果。后面我们还会经常编写这种回调函数。 + +由于err是否为null就是判断是否出错的标志,所以通常的判断逻辑总是: + +``` +if (err) { + // 出错了 +} else { + // 正常 +} +``` + +如果我们要读取的文件不是文本文件,而是二进制文件,怎么办? + +下面的例子演示了如何读取一个图片文件: + +```js + +'use strict'; + +var fs = require('fs'); + +fs.readFile('sample.png', function (err, data) { + if (err) { + console.log(err); + } else { + console.log(data); + console.log(data.length + ' bytes'); + } +}); +``` + +## 同步读文件 +除了标准的异步读取模式外,fs也提供相应的同步读取函数。同步读取的函数和异步函数相比,多了一个Sync后缀,并且不接收回调函数,函数直接返回结果。 + +用fs模块同步读取一个文本文件的代码如下: + +``` + +'use strict'; + +var fs = require('fs'); + +var data = fs.readFileSync('sample.txt', 'utf-8'); +console.log(data); + +``` + +可见,原异步调用的回调函数的data被函数直接返回,函数名需要改为readFileSync,其它参数不变。 + +如果同步读取文件发生错误,则需要用try...catch捕获该错误: + +```js + +try { + var data = fs.readFileSync('sample.txt', 'utf-8'); + console.log(data); +} catch (err) { + // 出错了 +} + +``` + +## 写文件 +将数据写入文件是通过fs.writeFile()实现的: + +``` + +'use strict'; + +var fs = require('fs'); + +var data = 'Hello, Node.js'; +fs.writeFile('output.txt', data, function (err) { + if (err) { + console.log(err); + } else { + console.log('ok.'); + } +}); + +``` + +## stat + +如果我们要获取文件大小,创建时间等信息,可以使用fs.stat(),它返回一个Stat对象,能告诉我们文件或目录的详细信息: + +``` +'use strict'; + +var fs = require('fs'); + +fs.stat('sample.txt', function (err, stat) { + if (err) { + console.log(err); + } else { + // 是否是文件: + console.log('isFile: ' + stat.isFile()); + // 是否是目录: + console.log('isDirectory: ' + stat.isDirectory()); + if (stat.isFile()) { + // 文件大小: + console.log('size: ' + stat.size); + // 创建时间, Date对象: + console.log('birth time: ' + stat.birthtime); + // 修改时间, Date对象: + console.log('modified time: ' + stat.mtime); + } + } +}); + +``` + +## 作业:生成100个文件,每个文件存入一个1到1000的随机数字,再取出最大值的那个文件,值也要取出来,再取出最小的那个. + diff --git "a/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/\344\275\234\344\270\232/wenjian.js" "b/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/\344\275\234\344\270\232/wenjian.js" new file mode 100644 index 0000000000000000000000000000000000000000..4009eca52ee9552d06b88d418fddbb5a2a4ea94f --- /dev/null +++ "b/\344\275\225\345\273\272\346\201\222/2.16\357\274\214npm\345\222\214\350\257\273\345\217\226\346\226\207\344\273\266\357\274\210\344\270\212\357\274\211/\344\275\234\344\270\232/wenjian.js" @@ -0,0 +1,35 @@ +// 作业:生成100个文件,每个文件存入一个1到1000的随机数字,再取出最大值的那个文件,值也要取出来,再取出最小的那个. +let fs= require("fs"); + + +let shuzu=[]; +let max=0; +let maxwenjian=0; +let min=1001; +let minwenjian=0; +for(let i=1;i<101;i++){ + //创建随机数 + let shu=Math.ceil(Math.random()*1000); + + //创建一百个文件并且赋值随机数 + fs.writeFileSync("./"+i+".txt",""+shu+""); + + //读取100个文件内的内容存入数组之中 + shuzu[i]=(fs.readFileSync("./"+i+".txt").toString()); + + //找最大值 + if(Number(shuzu[i])>max){ + max=Number(shuzu[i]); + maxwenjian=i; + } + + + //找最小值 + if(Number(shuzu[i])