# education **Repository Path**: bluelightsky/education ## Basic Information - **Project Name**: education - **Description**: Angular在线项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-12 - **Last Updated**: 2021-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 项目运行命令 ```` 开发时: `node main.js 或者 npm run dev` 开发完成后 npm run build 上线后 npm run 或者 npm run start ```` ### 注意点: 1. 首先要进行babel安装,不然node环境没有办法进行import语法导入,一些ES6语法node还不是完全支持 2. 创建package.json文件,不要使用`npm init -y`命令生成,因为该命令生成的文件是package-lock.json文件,不一样 3. 上线之后,不需要安装package.json文件中"devDependencies"开发环境 ``` "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "node main.js",//开发环境,实时编译 "build": "babel src -d dist",//开发完成之后,执行之前,需要产生转码编译文件结果 "prestart": "npm run build",//执行start之前先执行build命令 "start": "node dist/app.js"//生产环境,执行编译转码之后的文件 "poststart":""执行start之后先执行build命令(一般看不到,因为执行start程序就停止在这里了,直到start停止才会执行这里的命令) }, ``` ### 安装Babel步骤: #### 1.npm下载 ```javascript npm install --save babel-core npm install --save babel-preset-env npm install babel-cli -g ``` #### 2.创建名为.babelrc文件, 并添加代码 ```javascript { "presets": [ "env" ], "plugins": [] } ``` #### 3.修改 package.json 文件中的 "scripts" 即可, 如:"start":"babel-node main.js" 这样修改之后,运行命令为`npm start` ### --save 和 --save-dev 通过 `--save` 参数安装的包,是将依赖项保存到 package.json 文件中的 dependencies 选项中。 通过 `--save-dev` 参数安装的包,是将依赖项保存到 package.json 文件中的 devDependencies 选项中。 无论是 `--save` 或者 `--save-dev` 安装的包,通过执行 `npm install` 都会将对应的依赖包安装进来。 但是,在开发阶段会有一些仅仅用来辅助开发的一些第三方包或是工具,然后最终上线运行(到了生产环境), 这些开发依赖项就不再需要了,就可以通过 `npm install --production` 命令仅仅安装 `dependencies` 中的 依赖项。 --- ### git不需要管理的文件,添加.gitignore文件 在里面添加不需要git管理的文件,这样下次git就会自动忽略这个文件 ### 下载的第三方库 1.yarn add mongodb--这个包后面没有用了 2.npm install --save mongoose or yarn add mongoose 3.处理具有文件类型的表单,使用第三方包formidable 在node中处理文件上传 yarn add formidable or npm install --save formidable 基本使用 ``` const http = require('http'); const formidable = require('formidable'); const server = http.createServer((req, res) => { if (req.url === '/api/upload' && req.method.toLowerCase() === 'post') { // parse a file upload const form = formidable({ multiples: true }); form.parse(req, (err, fields, files) => { res.writeHead(200, { 'content-type': 'application/json' }); res.end(JSON.stringify({ fields, files }, null, 2)); }); return; } // show a file upload form res.writeHead(200, { 'content-type': 'text/html' }); res.end(`

With Node.js "http" module

Text field title:
File:
`); }); server.listen(8080, () => { console.log('Server listening on http://localhost:8080/ ...'); }); ``` ### 易错点 yarn add mongodb--下载最新版3.XXXmongodb,连接数据库语法发生改变,需要修改package.json文件中的: "mongodb": "^2.2.33", 再npm install(重新下载所有的第三方包,根据package.json文件) 下载2.xxx版本的才不会报错 ### 目录结构 ``` 假如要添加一个课程管理功能: 1. 在 routers 目录中新建一个课程相关的路由模块 设计路由规则 根据不同的请求映射到具体的处理函数(在 controllers 目录中) 2. 在 controllers 目录中添加一个专门用来处理课程相关的请求处理模块 该模块内部提供所有的课程相关的处理方法,导出用来给 routes 使用的 3. 在 models 中添加对应的课程相关的数据模型模块 导出接口对象,用来给 controllers 使用的 ``` ### 有文件的提交 1.method必须是post 2.必须将表单的enctype 设置为multipart/form-data 3.把数据写入文件里 ``` const fs=require('fs'); req.on('end), () => { fs.writeFile('./body.txt', data, err => { if(err) { throw err } res.end('success'); }) } ``` ## 分页 假设现在集合有185条数据 每页展示 20 条数据 共分多少页 185(totalCount)/20(pageSize)=10(totalPage) 查看每一页如何计算 1---1-20 2---21-40 3---41-60 n---(n-1)*20+1 - 20*n