技术标签: node.js Node 前端 javascript
解析
并执行
JS 代码,给出运行结果浏览器 | Chrome | Firefox | Safri | JSCore |
---|---|---|---|---|
JS 解析引擎 | IE | V8 | OdinMonkey | Chakra |
框架 | Express | Electron | restify |
---|---|---|---|
功能 | 构建 Web 应用 | 构建跨平台桌面应用 | 构建 API 接口项目 |
win + e
cd 目标目录
node -v
node js文件路径
shift + 文件位置鼠标右键 + powershell
↑ 键
tab 键
esc 键
cls 键
操作文件
的模块const fs = require('fs')
读取
指定文件内容path:文件路径的字符串
options:读取文件的编码格式,默认 utf8
callback: 文件读取完成后,通过回调函数拿到读取结果
写入
内容data:要写入的内容
相对路径
时,执行 node 命令所处目录,出现路径动态拼接错误处理路径
的模块const path = require('path')
../
’,‘./d’,‘e’) // \a\b\d\epath:完整路径字符串
ext:文件扩展名
创建 web 服务器
的模块const http = require('http')
web 服务器软件
,使之异于普通电脑。如 IIS、Apache 等第三方 web 服务器软件通过代码手写服务器软件
,从而对外提供 web 服务每台计算机的唯一地址
,通常以点分十进制
表示成a.b.c.d的形式,均为0-255间十进制整数字符型地址
方案IP 地址和域名之间的转换
服务对应 web 服务
进行处理
80端口可以被省略
请求对象
,包含与客户端相关的数据和属性
响应对象
,包含与服务器相关的数据和属性
// 1、导入 http 模块
const http = require('http')
// 2、创建 web 服务器实例
const server = http.createServer()
// 3、调用 server.on() 方法,为服务器绑定 request 事件
server.on('request', (req, res) => {
const str = `你请求的地址为${
req.url},请求的 method 为${
req.method}`
// 3.1、解决中文乱码
res.setHeader('Content-Type','text/html;charset=utf-8')
// 3.2、向客户端发送指定内容,并结束请求
res.end(str)
})
// 4、调用 server.listen(端口号,回调) 方法,启动 web 服务器
server.listen(80, () => {
console.log('http running at http://127.0.0.1');
})
请求的 url 地址
默认响应内容
为 404 Not found请求的页面类型
Content-Type 响应头
,防止中文乱码res.end()
把内容响应给客户端server.on('request',(req, res) => {
// 1、获取请求的 url 地址
const url = req.url
// 2、设置默认响应内容为 404 Not Found
let content = `<h1>404 Not Found</h1>`
// 3、判断用户请求页面类型
if(url === '/' || url === '/index.html'){
content = `<h1>首页</h1>`
}else if(url === '/about.html'){
content = `<h1>关于页面</h1>`
}
// 4、设置 Content-Type 响应头,防止中文乱码
res.setHeader('Content-Type', 'text/html; charset=utf-8')
// 5、内容响应给客户端
res.end(content)
})
实际存放路径
,作为每个资源的请求 url 地址
// 1、导入模块,处理服务器、文件、路径问题
const http = require('http')
const fs = require('fs')
const path = require('path')
// 2、创建web服务器
const server = http.createServer()
// 3、添加web服务器的request事件
server.on('request', (req, res) => {
const url = req.url
// 3.1、路径直接拼接
// const fpath = path.join(__dirname, url)
// 3.2、优化资源请求路径
let fpath = ''
if(url === '/'){
fpath = path.join(__dirname, '/clock/index.html')
}else{
fpath = path.join(__dirname, '/clock', url)
}
// 4、根据映射来的文件路径读取文件
fs.readFile(fpath, 'utf-8', (err, dataStr) => {
if(err) return res.end('404 Not Found')
// 成功读取的内容响应给客户端
res.end(dataStr)
})
})
// 5、启动服务器
server.listen(80, ()=>{
console.log('server running at http://127.0.0.1');
})
官方提供
的,如 fs、path、http用户创建
的每个 .js 文件第三方开发
模块,下载后使用只能在当前模块被访问
Module {
id: '.',
path: 'C:\\Users\\Administrator\\Desktop\\files',
exports: {
},
filename: 'C:\\Users\\Administrator\\Desktop\\files\\module.js',
loaded: false,
children: [],
paths: [
'C:\\Users\\Administrator\\Desktop\\files\\node_modules',
'C:\\Users\\Administrator\\Desktop\\node_modules',
'C:\\Users\\Administrator\\node_modules',
'C:\\Users\\node_modules',
'C:\\node_modules'
]
}
module.exports 指定对象
默认情况下 module.exports 和 exports 指向同一个对象
,最终共享结果以 module.exports 指向的对象为准第三方模块
又称包npm install 包名 // 完整版
npm i 包名 // 简写版
npm i 包名@版本(点分十进制:大版本.功能大版本.Bug修复版本) // 指定版
npm i 包名 --save-dev // 仅项目开发阶段使用的包复杂版
npm i 包名 -D // 仅项目开发阶段使用的包简写版
项目根目录
中必有 package.json
包管理配置文件,记录与项目有关的配置信息,方便剔除 node_modules 目录后,在团队成员共享项目源代码
npm init -y
快速创建 package.json 包管理配置文件
英文目录
下运行,不支持空格名称
和版本号
记录到 package.jsonnpm install/i
命令,直接读取 package.json 中的 dependencies 节点,一次性下载npm uninstall 包名
,自动将卸载的包从 package.json 中的 dependencies 节点移除仅项目开发阶段使用
的包需要 npm i 包名 -D
将包安装并记录到 devDependencies 节点开发和项目上线都使用
的包 npm i 包名
将包安装并记录到 dependencies 节点// 查看当前下包镜像源
npm config get registry
// 将下包镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/
// 检查镜像源是否下载成功
npm config get registry
// 安装 nrm 为全局工具
npm i nrm -g
// 查看所有镜像源
nrm ls
// 将下包镜像源切换为 taobao 镜像
nrm use taobao
npm i -g
,工具性质,参考官方说明文档使用仅开发期间使用
开发和上线期间使用
// 安装全局包
npm i -g i5ting_toc
// 调用包
i5ting_toc -f md文件路径 -o
{
"name":"包名",
"version":"1.0.0", //版本号
"main":"index.js", // 入口文件
"description":"包简介",
"keywords":['关键词1', '关键词2', '关键词3',],
"license":"ISC" // 开源许可协议
}
module.exports = {
功能函数名} // 暴露给入口文件
const exp = require('功能文件路径') //接收功能文件
module.export = {
...exp} // 暴露给外部
npm publish
命令npm unpublish 包名 --force
命令
路径标识符
,否则 node 会将其当做内置模块
或第三方模块
加载确切文件名
.js
扩展名.json
扩展名.node
扩展名文章浏览阅读6.1k次,点赞2次,收藏31次。最近在做一个和手势识别相关的东西,了解到google的MediaPipe效果不错而且开源,想着学习一下,于是有了下文的安装, MediaPipe官网提供多种操作系统的安装方法,这里我选择ubuntu系统Ubuntu安装MediaPipegithub下载Meidapipe代码$ git clone https://github.com/google/mediapipe.git# Cha..._mdeiapipe ubuntu安装
文章浏览阅读2k次。OPPO Reno属于一款可以解锁BL的机型,也就是我们常说的深度测试,深度测试成功后就可以非常简单的去ROOT手机了,不会深度测试的看这里:深度测试教程深度测试名额有限,并且需满足一些条件才可以,我们建议用户申请深度测试有了深度测试后,就可以去刷TWRP_recovery了,ROM乐园教程区提供了丰富的TWRP,不少用户在成功刷入TWRP后,再刷入Magisk授权(也就是ROOT权限),再重启手..._oppo reno magisk
文章浏览阅读1.2w次,点赞10次,收藏107次。前言无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高效率• ..._csdn 打开 app stm32电机教程11- bldc 6步方波开环速度控制 原创 2019-12-1614:06
文章浏览阅读7.7k次,点赞2次,收藏11次。本系列是我的常用koa中间件使用笔记,防止忘记使用方法而作记录koa-body是一个可以帮助解析http中body的部分的中间件,包括json、表单、文本、文件等。基本使用const Koa = require('koa'); // 引入koaconst app = new Koa(); // 创建koa应用const koaBody = require('koa-body'); //引入koa-bodyapp.use( koaBody({ .._koa-body
文章浏览阅读485次,点赞2次,收藏4次。Markdown 列表、标题、公式、图片、超链接、上下标、甘特图、流程图、选择框等语法笔记文章目录一、 多级标题二、文字加粗、斜体、高亮、删除三、正文换行和换段四、有序列表和无序列表五、插入图片六、公式和文中公式七、插入表格八、插入超链接九、插入代码块十、分割线十一、甘特图 (Gantt)十二、UML 图表十三、流程图十四、上标和下标十五、选择框和对号十六、引用十七、注脚与解释_markdown 有序列表插入图片
文章浏览阅读870次,点赞12次,收藏21次。车牌识别技术是一项基于计算机视觉和图像处理的先进技术,它的出现改变了交通管理和安防监控的方式。随着城市交通的快速增长和车辆数量的不断增加,传统手动检查车牌的方法已经无法满足日益增长的需求。而车牌识别技术的出现,为自动化、高效的车辆识别提供了可行的解决方案。通过使用高分辨率摄像头和复杂的图像处理算法,车牌识别技术能够准确地捕捉车辆车牌的信息,并将其转化为数字或文字形式,实现自动化的车辆识别和数据管理。这项技术不仅提高了交通管理和安防监控的效率,还为城市交通的智能化发展奠定了坚实的基础。_车牌字符模板匹配
文章浏览阅读1.1w次,点赞4次,收藏28次。Eclipse里面找不到DatabaseExplorer?解决方案:追根溯源我的不是J2EE版本,根本没有window==>show view==>Other==>Data Management的Data Management.因此需要安装Database的插件,过程为:(1)Help==>Install New Software==>Other==>Data Management==>Dat_eclipse没有database
文章浏览阅读770次。按照官网步骤安装引入使用配置autoplay: true,后发现配置无效,查了无数文档后,终于发现是swiper版本问题swiper版本从7.x降到了5.x:配置写法:[email protected] 无法进行轮播
文章浏览阅读154次。(1)使用异或可简单加密数据,解密时使用加密后的数据与密钥重做一次异或运算即可。(2)由于某些操作系统不能正确处理非打印字符,因此,对于此类字符可采取原有不做加密。#include <stdio.h>#include <ctype.h>#define KEY 'z'int main(void){ char orig_char..._对数据,进行异或加密(应付苹果审核)
文章浏览阅读2.2k次。场景 失焦的时候关闭 选择列表 但是同时 点击列表的时候会触发 bulr 事件 然后 click事件失效解决办法 click 换 mousedown ( tips:事件优先执行顺序 mousedown > bulr > click)如果是移动端 同理 touchstart > bulr > touch..._vant swipe 点击和触摸冲突
文章浏览阅读466次,点赞5次,收藏10次。MQTT通信时候,我们要用到访问令牌,设备ID、管理凭据一般不用_树莓派 thingsboard
文章浏览阅读164次。OC5401 是一款单路 PWM 控制的高调光比降压恒流驱动控制器,PWM 调光比最高可达 10000:1。OC5401 可通过外接电阻设置 LED 输出电流,最大支持 5A 以上。OC5401 支持模拟调光和 PWM 数字调光,具有良好的调光性能。OC5401 采用电流滞环控制方式,无需环路补偿。OC5401 内部集成了欠压保护、过温保护等功能。OC5401 支持 16-60V 输入电压范围。OC5401 采用 ESOP8 封装。10000:1 PWM 调光范围。250:1 模拟调光范围。