diff --git "a/\347\216\213\346\243\256\347\232\223/0215\344\275\234\344\270\232/fangfa.js" "b/\347\216\213\346\243\256\347\232\223/0215\344\275\234\344\270\232/fangfa.js" new file mode 100644 index 0000000000000000000000000000000000000000..1d9330c069f432d7ec61a6035a06d7852e6c4173 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/0215\344\275\234\344\270\232/fangfa.js" @@ -0,0 +1,49 @@ +// 写个加减乘除的模块(尽量少写暴露,要考虑复用性),供外部使用. 作业每个分支要建一个目录(自己名字) + + let sum; + +let num={ + + jia:function(n1,n2){ + if(Number(n1)&&Number(n2)){ + sum=Number(n1)+Number(n2); + }else{ + sum="输入的信息有误"; + } + return sum; + }, + jian:function(n1,n2){ + if(Number(n1)&&Number(n2)){ + sum=Number(n1)-Number(n2); + }else{ + sum="输入的信息有误"; + } + return sum; + }, + chen:function(n1,n2){ + if(Number(n1)&&Number(n2)){ + sum=Number(n1)*Number(n2); + }else{ + sum="输入的信息有误"; + } + return sum; + }, + chu:function(n1,n2){ + if(n1==0){ + sum="被除数不能为0"; + }else{ + + if(Number(n1)&&Number(n2)){ + sum=Number(n1)/Number(n2); + }else{ + sum="输入的信息有误"; + } + + } + return sum; + } + +} + + +module.exports=num; \ No newline at end of file diff --git "a/\347\216\213\346\243\256\347\232\223/0215\344\275\234\344\270\232/jie.js" "b/\347\216\213\346\243\256\347\232\223/0215\344\275\234\344\270\232/jie.js" new file mode 100644 index 0000000000000000000000000000000000000000..9d269cb769793f02e3633bc34a4e5c0c4773d373 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/0215\344\275\234\344\270\232/jie.js" @@ -0,0 +1,5 @@ +let num =require('./fangfa'); +console.log(num.chu('1',5)); +console.log(num.jia('a',2)); +console.log(num.jian(',',2)); +console.log(num.chen(10,2)); \ No newline at end of file diff --git "a/\347\216\213\346\243\256\347\232\223/0216\344\275\234\344\270\232/wenjian.js" "b/\347\216\213\346\243\256\347\232\223/0216\344\275\234\344\270\232/wenjian.js" new file mode 100644 index 0000000000000000000000000000000000000000..082fa44d03420d1b10f67c4f78f7e01481eb139c --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/0216\344\275\234\344\270\232/wenjian.js" @@ -0,0 +1,33 @@ +// ## 作业:生成100个文件,每个文件存入一个1到1000的随机数字,再取出最大值的那个文件,值也要取出来,再取出最小的那个. + +let fs =require ("fs"); + + let shuzu =[]; + let xiao =1000; + let da=1; + let xiaowenjian=0; + let dawenjian=0; + + +for(i=1;i<=100;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]>da)){ + da=Number(shuzu[i]); + dawenjian=i; + } + //找最小的值 + if(Number(shuzu[i]Hello world!'); +}); + +// 让服务器监听8080端口: +server.listen(8080); + +console.log('Server is running at http://127.0.0.1:8080/'); + + +``` + +## 搭建一个web服务器,针对不同的参数,给予不同的回应 diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/7node\347\232\204\345\274\202\346\255\245\345\256\236\347\216\260promise.md" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/7node\347\232\204\345\274\202\346\255\245\345\256\236\347\216\260promise.md" new file mode 100644 index 0000000000000000000000000000000000000000..360d4b84c4d7f354f6bfee0c5ac1b8ab776d32ea --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/7node\347\232\204\345\274\202\346\255\245\345\256\236\347\216\260promise.md" @@ -0,0 +1,131 @@ +## Promise 期约 + +Promise 是一个 ECMAScript 6 提供的类,目的是更加优雅地书写复杂的异步任务。 +由于 Promise 是 ES6 新增加的,所以一些旧的浏览器并不支持,苹果的 Safari 10 和 Windows 的 Edge 14 版本以上浏览器才开始支持 ES6 特性。 +不是所有的浏览器都支持 + + +## 构造 Promise +现在我们新建一个 Promise 对象: + +```js +new Promise(function (resolve, reject) { + // 要做的事情... +}); +``` + + +Promise 构造函数只有一个参数,是一个函数,这个函数在构造之后会直接被异步运行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject。 + +当 Promise 被构造时,起始函数会被异步执行: + +```js + +new Promise(function (resolve, reject) { + console.log("Run"); +}); + +``` +这段程序会直接输出 Run。 + +resolve 和 reject 都是函数,其中调用 resolve 代表一切正常,reject 是出现异常时所调用的: + +```js +new Promise(function (resolve, reject) { + var a = 0; + var b = 1; + if (b == 0) reject("Divide zero"); + else resolve(a / b); +}).then(function (value) { + console.log("a / b = " + value); +}).catch(function (err) { + console.log(err); +}).finally(function () { + console.log("End"); +}); + +``` +Promise 类有 .then() .catch() 和 .finally() 三个方法,这三个方法的参数都是一个函数,.then() 可以将参数中的函数添加到当前 Promise 的正常执行序列,.catch() 则是设定 Promise 的异常处理序列,.finally() 是在 Promise 执行的最后一定会执行的序列。 .then() 传入的函数会按顺序依次执行,有任何异常都会直接跳到 catch 序列 + + +## 案例 + + +通过新建一个 Promise 对象好像并没有看出它怎样 "更加优雅地书写复杂的异步任务"。我们之前遇到的异步任务都是一次异步,如果需要多次调用异步函数呢?例如,如果我想分三次输出字符串,第一次间隔 1 秒,第二次间隔 4 秒,第三次间隔 3 秒: + +```js + +setTimeout(function () { + console.log("First"); + setTimeout(function () { + console.log("Second"); + setTimeout(function () { + console.log("Third"); + }, 3000); + }, 4000); +}, 1000); +``` + +这段程序实现了这个功能,但是它是用 "函数瀑布" 来实现的。可想而知,在一个复杂的程序当中,用 "函数瀑布" 实现的程序无论是维护还是异常处理都是一件特别繁琐的事情,而且会让缩进格式变得非常冗赘。 + +现在我们用 Promise 来实现同样的功能: + +```js +new Promise(function (resolve, reject) { + setTimeout(function () { + console.log("First"); + resolve(); + }, 1000); +}).then(function () { + return new Promise(function (resolve, reject) { + setTimeout(function () { + console.log("Second"); + resolve(); + }, 4000); + }); +}).then(function () { + setTimeout(function () { + console.log("Third"); + }, 3000); +}); +``` + +## 异步函数 +异步函数(async function)是 ECMAScript 2017 (ECMA-262) 标准的规范,几乎被所有浏览器所支持,除了 Internet Explorer。 + +在 Promise 中我们编写过一个 Promise 函数 + +```js +function print(delay, message) { + return new Promise(function (resolve, reject) { + setTimeout(function () { + console.log(message); + resolve(); + }, delay); + }); +} + +print(1000, "First").then(function () { + return print(4000, "Second"); +}).then(function () { + print(3000, "Third"); +}); + + + +async function asyncFunc() { + try { + await new Promise(function (resolve, reject) { + throw "Some error"; // 或者 reject("Some error") + }); + } catch (err) { + console.log(err); + // 会输出 Some error + } +} +asyncFunc(); + +``` + + + diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/gittest/level-21-class-5-node" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/gittest/level-21-class-5-node" new file mode 160000 index 0000000000000000000000000000000000000000..f42beaed3cc90db90619ae7e707fb82f96e549fd --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/gittest/level-21-class-5-node" @@ -0,0 +1 @@ +Subproject commit f42beaed3cc90db90619ae7e707fb82f96e549fd diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/images/1.png" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/images/1.png" new file mode 100644 index 0000000000000000000000000000000000000000..69062cad1a0f8cbe4bec062e4c977a64087e47d9 Binary files /dev/null and "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/images/1.png" differ diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node.code-workspace" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node.code-workspace" new file mode 100644 index 0000000000000000000000000000000000000000..bab1b7f616b360395e747dbbcd59ebadc307ad61 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node.code-workspace" @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": ".." + } + ], + "settings": {} +} \ No newline at end of file diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2661.md" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2661.md" new file mode 100644 index 0000000000000000000000000000000000000000..bcfc76cf43e7cf4129694edb019b22d2cf5c33ce --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2661.md" @@ -0,0 +1,63 @@ +## node 的框架 + +### 初始Express + +1.1 Express介绍 +Express是目前流行的基于Node.js运行环境的Web应用程序开发框架,它简洁且灵活,为Web应用程序提供了强大的功能。Express提供了一个轻量级模块,类似于jQuery(封装的工具库),它把Node.js的HTTP模块的功能封装在一个简单易用的接口中,用于扩展HTTP模块的功能,能够轻松地处理服务器的路由、响应、Cookie和HTTP请求的状态。 + +Express的优势: +(1)简洁的路由定义方式。 +(2)简化HTTP请求参数的处理。 +(3)提供中间件机制控制HTTP请求。 +(4)拥有大量第三方中间件。 +(5)支持多种模版引擎 + +### 安装express 框架 + +```js + +// 项目初始化 +npm init -y +// 安装 +npm install express --save + +// 查看版本 + +npm list express + + +``` + +## 利用Express搭建Web服务器 + +利用Express搭建Web服务器的基本步骤: + +#### 引入express模块; +#### 调用express()方法创建服务器对象; +#### 定义路由; +#### 调用listen()方法监听端口 + + +来个例子 + +```js + +// 引入express模块 +const express = require("express"); +// 创建Web服务器对象 +const app = express(); +// 定义GET路由,接收/处理客户端的GET请求 +app.get("/", (req, res) => { + // 对客户端做出响应,send()方法会根据内容的类型自动设置请求头 + res.end("hello express"); +}) +// 监听3000端口 +app.listen(3000); + +``` +#### 理解 app 是啥,req,res 是啥.怎么接收参数,怎么回应参数. + +## 作业:写个个人简历 + + + diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2662.md" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2662.md" new file mode 100644 index 0000000000000000000000000000000000000000..84fbc0a246420c793b560daa8da6ff3b0c2ff572 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2662.md" @@ -0,0 +1,117 @@ +## Express中间件 + +Express通过中间件接收客户端发来的请求,并对请求做出响应,也可以将请求交给下一个中间件继续处理。 + +Express中间件指业务流程中的中间处理环节,可以把中间件理解为客户端请求的一系列方法。如果把请求比作水流,那么中间件就是阀门,阀门可以控制水流是否继续向下流动,也可以在当前阀门处对水流进行排污处理,处理完成后再继续向下流动。 + +如图: + +![image](./images/1.png) + +#### 路由保护:当客户端访问登录页面时,可以先使用中间件判断用户的登录状态,如果用户未登录,则拦截请求,直接响应提示信息,并禁止用户跳转到登录页面。 +#### 网站维护公告:在所有路由的最上面定义接收所有请求的中间件,直接为客户端做出响应,并提示网站正在维护中。 +#### 自定义404页面:在所有路由的最上面定义接收所有请求的中间件,直接为客户端做出响应,并提示404页面错误信息。 + + +常用的中间件方法有app.get()、app.post()、app.use(),其基本语法形式如下 + +```js +app.get('请求路径', '请求处理函数'); // 接收并处理GET请求 +app.post('请求路径', '请求处理函数'); // 接收并处理POST请求 +app.use('请求路径', '请求处理函数'); // 接收并处理所有请求 + +``` + + +## app.get()中间件 + +当客户端向服务器端发送GET请求时,app.get()中间件方法会拦截GET请求,并通过app.get()中间件中的请求处理函数对GET请求进行处理。 + +```js +app.get('/', (req, res, next) => { + next(); +}); + + + +``` +同一个请求路径可以设置多个中间件,表示对同一个路径的请求进行多次处理,默认情况下Express会从上到下依次匹配中间件。 + +示例:使用app.get()定义中间件并返回req.name的值 + +```js + +// 引入express模块 +const express = require("express"); +// 创建Web服务器对象 +const app = express(); +// 定义中间件 +app.get("/request", (req, res, next) => { + req.name = "橘猫吃不胖"; + next(); // 启动下一个中间件 +}) +app.get("/request", (req, res) => { + res.end(req.name); +}) +// 监听3000端口 +app.listen(3000); + +``` + +## post 中间件 + +当浏览器向服务器发送POST请求时,app.post()定义的中间件会接收并处理POST请求。 + +示例:使用app.post()定义中间件发送post请求 + +第一步:新建一个用于发送post请求的表单index.htm + +```js +
+ +
+ +``` + +第二步:定义app.post()中间件,接受并处理浏览器发送的POST请求,返回req.name的值 + +```js + +const express = require("express"); +const app = express(); +// 定义中间件 +app.post("/post", (req, res, next) => { + req.name = "橘猫吃不胖"; + next(); +}) +app.post("/post", (req, res) => { + res.end(req.name); +}) +// 监听4000端口 +app.listen(4000); + +``` + +## app.use()中间件 + +通过app.use()定义的中间件既可以处理GET请求又可以处理POST请求。在多个app.use()设置了相同请求路径的情况下,服务器都会接收请求并进行处理。 + +示例:使用app.use()定义中间件,处理GET和SET请求 + +```js + +const express = require("express"); +const app = express(); +// 定义中间件 +app.use("/form", ((req, res, next) => { + req.name = "橘猫吃不胖"; + next(); +})) +app.use("/form", (req, res) => { + res.end(req.name); +}) +// 监听3000端口 +app.listen(3000); + + +``` diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2663.md" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2663.md" new file mode 100644 index 0000000000000000000000000000000000000000..8ad9aa70dd683262e9fe468abf8c1ac39a0cb0d5 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2663.md" @@ -0,0 +1,65 @@ +## 静态资源的处理和中间件的应用 + +express.static()是Express框架提供的内置中间件,它接收静态资源访问目录作为参数。 + +使用express.static()内置中间件可以方便地托管静态文件,在客户端访问服务器的静态资源时使用。常用的静态资源有图片、CSS、JavaScript和HTML文件等。 + +express.static()参数是静态资源所在的目录,它需要作为app.use()的参数使用,示例代码如下 + +```js +app.use(express.static('public')); + +``` + +举个栗子:实现静态资源访问 + +第一步:在src目录下新建public文件夹,用于存放静态文件,在该目录下新建一个文件夹images,存放一个图片文件 + + +第二步:在src目录下新建static.js文件,代码如下 +```js +const express = require("express"); +const app = express(); +// 静态资源处理 +app.use(express.static("public")); +// 监听3000端口 +app.listen(3000); + +``` +第三步:启动服务器,在浏览器中输入:localhost:3000/images/1.jpg,页面上就会显示出来放在images文件夹下面的图片 + +## 利用中间件处理错误 + +在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败、数据库连接失败等。这时候就需要用到错误处理中间件了,用它来集中处理错误。 + +利用app.use()定义错误处理中间件的示例代码如下: + +```js +app.use((err, req, res, next) => { + console.log(err.message); +}); + + +const express = require("express"); +const fs = require("fs"); +const app = express(); +// 使用app.get()中间件进行文件读取操作 +app.get("/readFile", (req, res, next) => { + // 读取a.txt文件 + fs.readFile("./a.txt", "utf8", (err, result) => { + if (err !== null) { // 如果错误信息不为空,将该信息传给下一个中间件 + next(err); + } else { + res.send(result); + } + }) +}) +// 错误处理中间件 +app.use((err, req, res, next) => { + // 设置响应状态码为500,并发送错误信息 + res.status(500).send(err.message); +}) +app.listen(3000); + + +``` \ No newline at end of file diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2664.md" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2664.md" new file mode 100644 index 0000000000000000000000000000000000000000..7b76593d48e49a7bcee0f0add24cf04a94be6a40 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node_express\346\241\206\346\236\2664.md" @@ -0,0 +1,74 @@ +## 参数的接收 + +### 接受GET请求 + +Express框架中的req.query用于获取GET请求参数,框架内部会将GET参数转换为对象并返回。利用req.query获取GET请求参数的示例代码如下。 + +```js + +app.get('/', (req, res) => { + res.send(req.query); +}); + + +``` + + +示例:获取GET请求参数 + +```js +const express = require("express"); +const app = express(); +app.get("/query", (req, res) => { + // 获取get请求参数 + res.send(req.query); +}) +app.listen(3000); + +``` + + + +## 接收POST请求参数 +Express中的req.body用于获取POST请求参数,需要借助第三方body-parser模块将POST参数转换为对象形式。利用req获取POST请求参数的示例代码如下。 + +示例: + +### 第一步:安装body-parser模块 +```js +npm install body-parser@1.18.3 --save + +``` +### 第二步:编写query.js文件 + +```js + +const express = require("express"); +const bodyParsee = require("body-parser"); +const app = express(); +app.use(bodyParsee.urlencoded({ extended: false })); +app.post("/query", (req, res) => { + // 获取get请求参数 + res.send(req.body); +}) +app.listen(3000); + + +``` + +### 第三步:编写index.html文件 + + +```js + +
+ 用户名: +
+ 密码: +
+ +
+ + +``` + diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\347\232\204restfullapi.md" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\347\232\204restfullapi.md" new file mode 100644 index 0000000000000000000000000000000000000000..8f8162387dde9eee1c46751801c1d3ec0b3c58f0 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\347\232\204restfullapi.md" @@ -0,0 +1,19 @@ +## 什么是 REST? +REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。 + +表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML(标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。REST 通常使用 JSON 数据格式。 + + +## HTTP 方法 + +以下为 REST 基本架构的四个方法: + +GET - 用于获取数据。 + +PUT - 用于更新或添加数据。 + +DELETE - 用于删除数据。 + +POST - 用于添加数据 + +## \ No newline at end of file diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/test-git" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/test-git" new file mode 160000 index 0000000000000000000000000000000000000000..2b4876ac9942891cf96dd927da7a477141c53a20 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/test-git" @@ -0,0 +1 @@ +Subproject commit 2b4876ac9942891cf96dd927da7a477141c53a20 diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\345\205\250\345\261\200\345\257\271\350\261\241/path.js" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\345\205\250\345\261\200\345\257\271\350\261\241/path.js" new file mode 100644 index 0000000000000000000000000000000000000000..3b9e2ec7d9ef78c06b1fd728eb67e0475e19457f --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\345\205\250\345\261\200\345\257\271\350\261\241/path.js" @@ -0,0 +1,40 @@ +//全局变量 +//__filename 获取文件的路径,获取到绝对路径,包括文件名 +//__filename 前面是两个下划线 +console.log(__filename); +console.log('__filename'); +//eval 会把字符串当做js代码执行 +console.log(eval('__filename')); + +//__dirname 获取当前文件所在的文件夹 +//__dirname 前面也是两个下划线 +console.log(__dirname); + +//过一段时间执行里面的方法,只执行一次,第二次参数 timeout是 时间,单位毫秒 +setTimeout(() => { + console.log("过三秒后执行") +}, 3000); +console.log("我会不会先执行"); + +//周期性执行 +// setInterval(() => { +// console.log("看能不能周期性的执行") +// }, 2000); + +//process 当前的这个程序 +//console.log(process); + +process.on('exit',()=>{ + setTimeout(() => { + console.log('-----------------------------------------------------我会不会被执行') + }, 0); + console.log('要退出了') +}); + +process.on('beforeExit',()=>{ + console.log("我能不能优先于上面的代码先输出"); +}) + + + + diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/moduleObj.js" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/moduleObj.js" new file mode 100644 index 0000000000000000000000000000000000000000..82dcb0d1137c67c6a42038e8f6a9fc4b42421b18 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/moduleObj.js" @@ -0,0 +1,18 @@ +let obj ={ + js:function(){ + return 4000; + }, + 'php':function(){ + return 4000; + }, + python:function(){ + return 5000; + }, + money:300, +} + + + +//module.exports 可以理解对外暴露的空对象 +//module.exports.obj = obj;//也可以只是使用的模块,多了一层obj +module.exports = obj; \ No newline at end of file diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/moudle.js" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/moudle.js" new file mode 100644 index 0000000000000000000000000000000000000000..38b51031033997dd0a9bb7cc8964f924c231bf90 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/moudle.js" @@ -0,0 +1,45 @@ + + +function giveFlower() { + console.log('送花'); + return "送花"; +} + +function giveGift() { + console.log("手机"); + return "苹果手机"; +} + +function giveMoney() { + console.log("money"); + return "给钱"; +} + +function giveBook() { + console.log("一起好好读书"); + return "一起自习"; +} + +var money = 200; +function changeMoney(num){ + money = money+num; + console.log(money); + +} + +// changeMoney(500); +// console.log(money); + + +//module.exports 理解为一个对外暴露的空对象 +// let obj={} +// obj.name = function(){ + +// } +module.exports.flower = giveFlower; +module.exports.giveMoney = giveMoney; +module.exports.giveBook = giveBook; +module.exports.qian = money;//等效于 module.exports.qian = 200 +module.exports.changeMoney = changeMoney; + + diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/use.js" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/use.js" new file mode 100644 index 0000000000000000000000000000000000000000..d25c1d4bd3d7de5e7291d6bc97997a58526bbf0d --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/node\351\241\271\347\233\256/\346\250\241\345\235\227/use.js" @@ -0,0 +1,16 @@ +//使用模块,需要使用一个关键词 require +let obj=require("./moudle.js"); +console.log(obj);// 引入一个模块就是一个对象 + +obj.flower(); + +//require进来,.js可以省去, 如果是同一层级 ./ 不能省去 +let useObj = require("./moduleObj"); +// console.log(useObj); +// console.log(useObj.obj.js()) +console.log(useObj.js()); + +//修改module.js里面的金额 +console.log(obj.qian);// +obj.changeMoney(500); +console.log(obj.qian);//200 还是 700 diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/test/express.js" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/test/express.js" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/moduleObj.js" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/moduleObj.js" new file mode 100644 index 0000000000000000000000000000000000000000..82dcb0d1137c67c6a42038e8f6a9fc4b42421b18 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/moduleObj.js" @@ -0,0 +1,18 @@ +let obj ={ + js:function(){ + return 4000; + }, + 'php':function(){ + return 4000; + }, + python:function(){ + return 5000; + }, + money:300, +} + + + +//module.exports 可以理解对外暴露的空对象 +//module.exports.obj = obj;//也可以只是使用的模块,多了一层obj +module.exports = obj; \ No newline at end of file diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/moudle.js" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/moudle.js" new file mode 100644 index 0000000000000000000000000000000000000000..38b51031033997dd0a9bb7cc8964f924c231bf90 --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/moudle.js" @@ -0,0 +1,45 @@ + + +function giveFlower() { + console.log('送花'); + return "送花"; +} + +function giveGift() { + console.log("手机"); + return "苹果手机"; +} + +function giveMoney() { + console.log("money"); + return "给钱"; +} + +function giveBook() { + console.log("一起好好读书"); + return "一起自习"; +} + +var money = 200; +function changeMoney(num){ + money = money+num; + console.log(money); + +} + +// changeMoney(500); +// console.log(money); + + +//module.exports 理解为一个对外暴露的空对象 +// let obj={} +// obj.name = function(){ + +// } +module.exports.flower = giveFlower; +module.exports.giveMoney = giveMoney; +module.exports.giveBook = giveBook; +module.exports.qian = money;//等效于 module.exports.qian = 200 +module.exports.changeMoney = changeMoney; + + diff --git "a/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/use.js" "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/use.js" new file mode 100644 index 0000000000000000000000000000000000000000..d25c1d4bd3d7de5e7291d6bc97997a58526bbf0d --- /dev/null +++ "b/\347\216\213\346\243\256\347\232\223/node\347\254\224\350\256\260/node/\346\250\241\345\235\227/use.js" @@ -0,0 +1,16 @@ +//使用模块,需要使用一个关键词 require +let obj=require("./moudle.js"); +console.log(obj);// 引入一个模块就是一个对象 + +obj.flower(); + +//require进来,.js可以省去, 如果是同一层级 ./ 不能省去 +let useObj = require("./moduleObj"); +// console.log(useObj); +// console.log(useObj.obj.js()) +console.log(useObj.js()); + +//修改module.js里面的金额 +console.log(obj.qian);// +obj.changeMoney(500); +console.log(obj.qian);//200 还是 700