网站里面嵌入的地图是怎么做的,开发软件多少钱一个月,wordpress登录可见代码,安米网在线app制作一、概述
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 #xff0c;使用了一个事件驱动、非阻塞式I/O模型#xff0c; 让JavaScript 运行在服务端的开发平台#xff0c;它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。
官网地…一、概述
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 使用了一个事件驱动、非阻塞式I/O模型 让JavaScript 运行在服务端的开发平台它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。
官网地址https://nodejs.org/zh-cn
Node.js 学习路线JavaScript 基础语法 Node.js 内置API模块fs、path、http等 第三方API模块express、mysql等 二、安装
打开 官网 根据实际需求选择下载方式以及下载内容 三、Node.js 模块
1、概述
Node.js 中根据模块来源的不同将模块分为了 3 大类分别是 内置模块内置模块是由 Node.js 官方提供的例如 fs、path、http 等 自定义模块用户创建的每个 .js 文件都是自定义模块 第三方模块由第三方开发出来的模块并非官方提供的内置模块也不是用户创建的自定义模块使用前需要先下载 // 1. 加载内置的 fs 模块 const fs require(‘fs’) // 2. 加载用户的自定义模块 const custom require(’ ./custom.js’) // 3. 加载第三方模块 const moment require‘moment’
2、内置模块
教程参见
【W3Cschool】Node.js 官方文档【RUNOOB】Node.js
3、模块作用域
在自定义模块中定义的变量、方法等成员只能在当前模块内被访问这种模块级别的访问限制叫做模块作用域。
模块作用域防止了全局变量污染的问题
4、module
在每个 .js 自定义模块中都有一个 module 对象它里面存储了和当前模块有关的信息。
在自定义模块中可以使用 module.exports 对象将模块内的成员共享出去供外界使用。
外界用 require() 方法导入自定义模块时得到的就是 module.exports 所指向的对象。
使用 require() 方法导入模块时导入的结果永远以 module.exports 指向的对象为准。
由于 module.exports 单词写起来比较复杂为了简化向外共享成员的代码Node 提供了 exports 对象。默认情况下exports 和 module.exports 指向同一个对象。最终共享的结果还是以 module.exports 指向的对象为准。
为了防止混乱建议不要在同一个模块中同时使用 exports 和 module.exports
5、模块的加载过程
优先从缓冲中加载 模块在第一次加载后会被缓存。 这也意味着多次调用 require() 不会导致模块的代码被执行多次。 不论是内置模块、用户自定义模块、还是第三方模块它们都会优先从缓存中加载从而提高模块的加载效率。内置模块的加载机制 内置模块是由 Node.js 官方提供的模块内置模块的加载优先级最高。 例如require(‘fs’) 始终返回内置的 fs 模块即使在 node_modules 目录下有名字相同的包也叫做 fs。自定义模块的加载机制 使用 require() 加载自定义模块时必须指定以 ./ 或 ../ 开头的路径标识符。在加载自定义模块时如果没有指定 ./ 或 ../ 这样的路径标识符则 node 会把它当作内置模块或第三方模块进行加载。 在使用 require() 导入自定义模块时如果省略了文件的扩展名则 Node.js 会按顺序分别尝试加载以下的文件 ① 按照确切的文件名进行加载 ② 补全 .js 扩展名进行加载 ③ 补全 .json 扩展名进行加载 ④ 补全 .node 扩展名进行加载 ⑤ 加载失败终端报错第三方模块的加载机制 如果传递给 require() 的模块标识符不是一个内置模块也没有以 ./ 或 ../ 开头则 Node.js 会从当前模块的父目录开始尝试从 /node_modules 文件夹中加载第三方模块。 如果没有找到对应的第三方模块则移动到再上一层父目录中进行加载直到文件系统的根目录。 例如假设在 ‘C:Usersitheimaproject oo.js’ 文件里调用了 require(‘tools’)则 Node.js 会按以下顺序查找 ① C:Usersitheimaproject ode_modules ools ② C:Usersitheima ode_modules ools ③ C:Users ode_modules ools ④ C: ode_modules ools目录作为模块 当把目录作为模块标识符传递给 require() 进行加载的时候有三种加载方式 ① 在被加载的目录下查找一个叫做 package.json 的文件并寻找 main 属性作为 require() 加载的入口 ② 如果目录里没有 package.json 文件或者 main 入口不存在或无法解析则 Node.js 将会试图加载目录下的 index.js 文件。 ③ 如果以上两步都失败了则 Node.js 会在终端打印错误消息报告模块的缺失Error: Cannot find module ‘xxx’
四、npm与包
1、包
Node.js 中的第三方模块又叫做包。
不同于 Node.js 中的内置模块与自定义模块包是由第三方个人或团队开发出来的免费供所有人使用。
由于 Node.js 的内置模块仅提供了一些底层的 API导致在基于内置模块进行项目开发的时效率很低。包是基于内置模块封装出来的提供了更高级、更方便的 API极大的提高了开发效率。 https://www.npmjs.com/ 网站上搜索自己所需要的包 https://registry.npmjs.org/ 服务器上下载自己需要的包 npm 用于从服务器下载包
一个规范的包它的组成结构必须符合以下 3 点要求
包必须以单独的目录而存在包的顶级目录下要必须包含 package.json 这个包管理配置文件package.json 中必须包含 nameversionmain 这三个属性分别代表包的名字、版本号、包的入口。
关于更多的约束参见【包约束规范】
2、npmNode Package Manager
2.1 概述
npm 是随着 Node.js 的安装一块安装的包管理和分发工具。
npm 常见的场景
允许用户从 npm 服务器下载别人编写的第三方包到本地使用。允许用户从 npm 服务器下载并安装别人编写的命令行程序到本地使用。允许用户将自己编写的包或命令行程序上传到 npm 服务器供别人使用。
npm 的背后是基于 couchdb 的一个数据库详细记录了每个包的信息包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是将开发者从繁琐的包管理工作版本、依赖等中解放出来更加专注于功能的开发。
npm 命令参见npm 官方文档
2.2 package.json
项目使用 npm 初始化命令项目名需为英文
npm init -y该命令会在项目根目录生成包管理配置文件 package.json 用来记录与项目有关的一些配置信息。
{name: code, // 项目名称 version: 1.0.0, // 项目版本号description: , // 项目描述main: index.js, // 包的入口文件scripts: {} // 脚本author: , // 作者keywords: [], // 关键字license: ISC, // 开源许可协议devDependencies: {}, // 开发依赖包dependencies: {} // 核心依赖包
}dependencies devDependencies 如果某些包只在项目开发阶段会用到在项目上线之后不会用到则建议把这些包记录到 devDependencies 节点中。 与之对应的如果某些包在开发和项目上线之后都需要用到则建议把这些包记录到 dependencies 节点中。 将包记录到 devDependencies 节点中 // 安装指定的包并记录到 devDependencies 节点中
npm i 包名 -D//注意上述命令是简写形式等价于下面完整的写法
npm install 包名 --save-dev判断一个包是否在项目上线后会不会用到https://www.npmjs.com/包名#install 2.3 node_modules package-lock.json
初次装包完成后在项目文件夹下多一个叫做 node_modules 的文件夹和 package-lock.json 的配置文件。
node_modules 文件夹用来存放所有已安装到项目中的包。require() 导入第三方包时就是从这个目录中查找并加载包。package-lock.json 配置文件用来记录 node_modules 目录下的每一个包的下载信息例如包的名字、版本号、下载地址等。
程序员不要手动修改 node_modules 或 package-lock.json 文件中的任何代码npm 包管理工具会自动维护它们。 多个第三方包体积较大在协作开发时一般不将第三方包上传至代码仓库。 即将 node_modulus 文件夹添加到 .gitignore 忽略文件中。 当我们拉代码时需执行 npm install 来一次性安装所有的包。 npm install 会先读取 package.json 中的 dependencies 节点读取到新记录的所有依赖包名称和版本号之后npm包管理工具把所有包安装。 公司项目有的时候会有自己开发的包这类包一般存放在公司自己建的镜像仓库所以在执行 npm install 前需要修改镜像。 2.4 切换镜像源
由于在国内上网环境影响一些依赖包下载会很慢甚至会下载失败所以就要使用到镜像下载。
将npm默认的registry修改为淘宝registry
# 查看当前使用的镜像路径
npm config get registry# 修改为淘宝镜像
npm config set registry https://registry.npm.taobao.org/# 检查是否修改成功
npm config get registry镜像源地址
npm 官方原始镜像网址是https://registry.npmjs.org/
淘宝 NPM 镜像http://registry.npmmirror.com
阿里云 NPM 镜像https://npm.aliyun.com
腾讯云 NPM 镜像https://mirrors.cloud.tencent.com/npm/
华为云 NPM 镜像https://mirrors.huaweicloud.com/repository/npm/
网易 NPM 镜像https://mirrors.163.com/npm/
中国科学技术大学开源镜像站http://mirrors.ustc.edu.cn/
清华大学开源镜像站https://mirrors.tuna.tsinghua.edu.cn/nrm可以快速查看和切换下包的镜像源
# 通过 npm 包管理器将 nrm 安装为全局可用的工具
npm i nrm -g 查看所有可用的镜像源
nrm ls# 将下包的镜像源切换力 taobao 镜像
nrm use taobao使用淘宝 cnpm
# 全局安装基于淘宝源的cnpm
npm install -g cnpm --registryhttps://registry.npm.taobao.org# 检测cnpm安装是否成功
cnpm -v2.5 项目包 全局包
项目包那些被安装到项目的 node_modules 目录中的包都是项目包全局包在执行 npm install 命令时如果提供了 -g 参数则会把包安装为全局包。全局包安装路径 WindowsC:Users用户目录AppDataRoaming pm ode_modulesMac 只有工具性质的包才有全局安装的必要性。因为它们提供了好用的终端命令。 判断某个包是否需要全局安装后才能使用可以参考官方提供的使用说明即可。 推荐一些全局包 nrm切换镜像源i5ting_toc把 md 文档转为 html 页面nodemon监听项目文件的变动当代码被修改后nodemon 会自动重启项目 五、Express
1、Express 概述
Express 是基于 Node.js 平台快速、开放、极简的 Web 开发框架。
Express 的作用和 Node.js 内置的 http 模块类似是专门用来创建 Web 服务器的。
Express 就是一个 npm 上的第三方包提供了快速创建 Web 服务器的便捷方法。
Express 框架核心特性
可以设置中间件来响应 HTTP 请求。定义了路由表用于执行不同的 HTTP 请求动作。可以通过向模板传递参数来动态渲染 HTML 页面。
2、Express 基本使用
Express 快速入门
十、资料
【b站 黑马】Node.js 教程