目录
7.5 数据分页(可直接使用第三方模块mongoose-sex-page)
1.Node开发基础
1.1基础(服务器端开发)
1.学习目标:能够和后端程序员更加紧密的配合
网站业务逻辑前置,学习前端技术需要后端技术支撑(Ajax)
扩宽知识视野,能够站在更高的角度审视整个项目
2.作用:实现网站的业务逻辑
数据的增删改查
3.选择:使用JavaScript语法开发后端应用
一些公司要求前端工程师掌握Node开发;生态系统活跃,有大量开源库可以使用;前端开发工具大多基于Node开发;前端开发工具大多基于Node开发
Node是一个基于Chrome V8引擎的JavaScript代码运行环境。需要为node.js配置环境变量。在浏览器中全局对象是window,在Node中全局对象是global。
方法:console.log() 在控制台中输出;setTimeout() 设置超时定时器;clearTimeout() 清除超时时定时器;setInterval() 设置间歇定时器;clearInterval() 清除间歇定时器
1.2模块加载及第三方包
1.2.1 Node.js模块化开发
1.JavaScript在使用时存在两大问题,文件依赖和命名冲突。
2.模块内部可以使用exports对象进行成员导出, 使用require方法导入其他模块。
3.exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准
1.2.2 系统模块
Node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块
1.读取文件内容
.reaFile('文件路径/文件名称'[,'文件编码'], callback);
2.写入文件内容
.writeFile('文件路径/文件名称', '数据', callback);
3.路径拼接
.join('路径', '路径', ...)
4.
- // 导入path模块
- const path = require('path');
- // 路径拼接
- let finialPath = path.join('itcast', 'a', 'b', 'c.css')
5.使用__dirname获取当前文件所在的绝对路径
1.2.3第三方模块(包)
1.别人写好的、具有特定功能的、我们能直接使用的模块即第三方模块
2.形式:以js文件的形式存在,提供实现项目具体功能的API接口。
以命令行工具形式存在,辅助项目开发
3.npmjs.com:第三方模块的存储和分发仓库
4.下载:npm install 模块名称
卸载:npm unintall package 模块名称
5.使用npm install nodemon –g 下载它,在命令行工具中用nodemon命令替代node命令执行文件
Gulp:将机械化操作编写成任务, 想要执行机械化操作时执行一个命令行命令任务就能自动执行了,用机器代替手工,提高开发效率。
作用:项目上线,HTML、CSS、JS文件压缩合并;语法转换(es6、less ...);公共文件抽离;修改文件浏览器自动刷新;使用:使用npm install gulp下载gulp库文件;在项目根目录下建立gulpfile.js文件;重构项目的文件夹结构 src目录放置源代码文件 dist目录放置构建后文件;在gulpfile.js文件中编写任务.;在命令行工具中执行gulp任务
方法:
gulp.src():获取任务要处理的文件
gulp.dest():输出文件
gulp.task():建立gulp任务
gulp.watch():监控文件的变化
插件:gulp-htmlmin :html文件压缩
gulp-csso :压缩css
gulp-babel :JavaScript语法转化
gulp-less: less语法转化
gulp-uglify :压缩混淆JavaScript
gulp-file-include 公共文件包含
browsersync 浏览器实时同步
6.package.json文件:项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。使用npm init -y命令生成。
7.node_modules文件夹:文件夹以及文件过多过碎,当我们将项目整体拷贝给别人的时候,传输速度会很慢很慢.
复杂的模块依赖关系需要被记录,确保模块的版本和当前保持一致,否则会导致当前项目运行报错
8.项目依赖:在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖
使用npm install 包名命令下载的文件会默认被添加到 package.json 文件的 dependencies 字段中
9. package-lock.json文件的作用:锁定包的版本,确保再次下载时不会因为包版本不同而产生问题
加快下载速度,因为该文件中已经记录了项目所依赖第三方包的树状结构和包的下载地址,重新安装时只需下载即可,不需要做额外的工作
1.2.4模块加载机制
1.模块查找规则-当模块拥有路径但没有后缀时
require方法根据模块路径查找模块,如果是完整路径,直接引入模块。
如果模块后缀省略,先找同名JS文件再找同名JS文件夹
如果找到了同名文件夹,找文件夹中的index.js
如果文件夹中没有index.js就会去当前文件夹中的package.json文件中查找main选项中的入口文件
如果找指定的入口文件不存在或者没有指定入口文件就会报错,模块没有被找到
2.模块查找规则-当模块没有路径且没有后缀时
Node.js会假设它是系统模块
Node.js会去node_modules文件夹中
首先看是否有该名字的JS文件
再看是否有该名字的文件夹
如果是文件夹看里面是否有index.js
如果没有index.js查看该文件夹中的package.json中的main选项确定模块入口文件
否则找不到报错
2.请求响应原理及HTTP协议
2.1 服务器端基础概念
网站、Node网站服务器、P地址、域名、端口
URL(统一资源定位符):传输协议://服务器IP或域名:端口/资源所在位置标识;http:超文本传输协议,提供了一种发布和接收HTML页面的方法。
2.2创建web服务器
- // 引用系统模块
- const http = require('http');
- // 创建web服务器
- const app =