JavaScript能否做后端开发JS可以在浏览器中运行,我们需要通过Node.js让JS代码在服务端运行Node.js 简介什么是Node.jsNode.js 是一个基于Chrome V8引擎的JavaScript...Node.js 是JavaScript的后端运行环境。Node.js 中无法调用DOM和BOM等浏览器内置API。...为什么需要包由于Node.js 的内置模块仅提供了一些底层的API,导致在基于内置模块进行项目开发的时,效率很低。包是基于内置模块封装出来的,提供了更高级、更方便的API,极大的提高了开发效率。...运行npm install命令安装包的时候,npm包管理工具会自动把包的名称和版本号,记录到package.json 中。...,作为包的根目录在itheima-tools文件夹中,新建如下三个文件:package.json(包管理配置文件)index.js(包的入口文件)README.md(包的说明文档)// packge.json
但在 Node 中,该方法不会将文本显示在浏览器的 JavaScript 控制台中,而显示在标准输出流中。从命令行运行node时,这意味着你会在终端中看到记录的值。...如果你在一个包含package.json文件的目录中执行npm publish,它将一个包发布到注册处,带有 JSON 文件中列出的名称和版本。...本书不会深入探讨 NPM 的使用细节。 请参阅npmjs.org来获取更多文档和搜索包的方法。 文件系统模块 在Node中最常用的内建模块就是fs(表示 filesystem,文件系统)模块。...你需要向该函数传递状态码(本例中 200 表示成功)和一个对象,该对象包含协议头信息的值。该示例设置了"Content-Type"头,通知客户端我们将发送一个 HTML 文档。...习题 搜索工具 在 Unix 系统上,有一个名为grep的命令行工具,可以用来在文件中快速搜索正则表达式。 编写一个可以从命令行运行的 Node 脚本,其行为类似grep。
JavaScript 中可以使用 charCodeAt 方法获取字符对应的 ASCII: ?...更多关于编码的细节不再赘述,也不是本文的重点,如果想了解更多可自行搜索。 乱码的原因 我们经常会出现一些乱码的情况,就是因为在字符串与 Buffer 的转化过程中,使用了不同编码导致的。...-- 摘自维基百科 我们经常在 Linux 命令行使用管道,将一个命令的结果传输给另一个命令,例如,用来搜索文件。...ls | grep code 这里使用 ls 列出当前目录的文件,然后交由 grep 查找包含 code 关键词的文件。...前面说过,Node.js 中数据的写入都是内部实现的,下面通过读取文件的 fs 创建的可读流来举例: const fs = require('fs') // 创建 data.json 文件的可读流 const
I / O流等常见需求没有标准API 没有标准接口 在JavaScript中,几乎没有定义过如Web服务器或者数据库之类的标准统一接口 缺乏包管理系统 导致JavaScript应用中基本没有自动加载和安装以来的能力...,以使二次加载更快 文件模块给Node指明了确切的文件位置,所以在查找过程中可以节约大量时间,其加载速度仅慢于核心模块 自定义模块 是一种特殊的文件模块,是一个文件或者包的形式 这类模块的查找是最费时的...require分析标识符会出现不包含文件扩展名的情况 会按.js、.json、.node的次序补足扩展名,一次尝试 过程中,需调用fs模块同步阻塞地判断文件是否存在,Node单线程因此会引起性能问题...通过fs模块同步读取文件后编译执行 node文件 这是用C/C++编写的扩展文件,通过dlopen方法加在最后编译生成的文件 json文件 通过fs模块同步读取文件后,JSON.parse解析返回的结果...包实际上是一个存档文件,即一个目录直接打包为一个.zip/tar.gz格式的文件,安装后解压还原为目录 符合CommonJS规范的包目录应该包含如下文件 package.json 包描述文件 bin
CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。...http.createServer(...); Node.js中自带了一个叫做"http"的模块,我们在我们的代码中请求它并把返回值赋给一个本地变量。...Node 导入文件系统模块(fs)语法如下所示: var fs = require("fs") 2.1、异步和同步 Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的...通常用非零值表示错误。 %HomeDrive%: 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。...{当前用户根目录 – C:} %HomePath%: 系统 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。
旧的 ES 模块方式 __dirname和__filename在ES模块中不可用。...然而JavaScript最初是作为在Web浏览器中运行的语言而诞生的。...可以看看在Node.js中可以使用URL的相关使用 假设一个名为module.js的ES模块包含以下代码: console.log(import.meta.url); 如果使用Node.js的服务器上运行此文件...Deno和Bun中使用 Bun已经提前实现了import.meta.dir和import.meta.pat,它们是等效的,所以dirname和filename在 bun 其实是dir和path的别名 由于这个属性仅涉及基础文件系统...也就是说在浏览器环境中不可用;在浏览器中尝试使用import.meta.dirname将仅返回 undefined 参考 __dirname is back in Node.js with ES modules
options.include 和 options.exclude 分别指定了需要包含和排除的文件。然后,返回一个对象,其中包含了插件的名称和一个 transform 方法。...输出的文件名为当前模块的文件名加上 .txt 扩展名。最后,这个插件可以通过在 Rollup 配置文件中引入并添加到插件列表中来使用。...options.include 和 options.exclude 分别指定了需要包含和排除的文件。然后,返回一个对象,其中包含了插件的名称和一个 transform 对象。...在 handler 函数中,首先使用过滤器检查当前模块是否需要处理,并且判断当前模块是否是 JSON 文件。如果不需要处理或者不是 JSON 文件,则返回 null。...最后,这个插件可以通过在 Rollup 配置文件中引入并添加到插件列表中来使用。它会在构建过程中将 JSON 文件转换为 ES 模块格式的代码。页面使用import pkg from "..
利用Express实现ADUS项目使用Express可以快速地实现一个包含增删改查(CRUD)功能的Web项目,下面是一个基于Express实现的简单ADUS(添加、显示、更新、删除、搜索)项目模块化思想模块如何划分...:模块职责要单一在使用Express实现一个CRUD项目时,通常可以将不同的功能模块划分为不同的路由和控制器,以实现代码的可读性和可维护性。...在实现模块划分时,需要注意以下几点:尽量保持模块功能单一。一个模块应该只包含一个相关的功能,以便于代码的维护和管理。将路由和控制器分离。...javascript模块化:Node 中的 CommonJS浏览器中的:AMDrequire.jsCMD sea.jses6中增加了官方支持起步初始化模板处理路由设计请求方法请求路径 get参数.../** * student.js * 数据操作文件模块 * 职责:操作文件中的数据,只处理数据,不关心业务 */var fs = require('fs'); /** * 获取所有学生列表 * return
在 C 和 C++ 中 #include 指令就用于这个目的,而 Java 和 Python 有 import 关键字。...重要的是,现在可以用 package.json 文件,它包含了诸如包的唯一名称之类的信息。现在使用的 JSON 格式扩展了一个名为 type 的新属性。...可以选择将其更改为 commonjs 或 module 以确定默认情况下应加载的包中所包含的 JavaScript 文件的模式。...fs 和 crypto 等内置模块可以通过两种方式加载。 Node.js 中的差异 除了异步加载依赖项的问题之外,Node.js 中的旧模块和新模块之间还存在进一步的差异。...简而言之,ES 模块不会导出和导入值,只是对值的引用。导入此类引用的模块可以访问该值,但无法修改它。已导出引用的模块可以为引用分配新值,该值将由从该点导入引用的其他模块使用。
对于没有明确*.mjs或.cjs扩展名的文件,Node 会在与文件相同的目录中查找名为package.json的文件,然后在每个包含目录中查找。...如果你想要使用最底层的fs.read()和fs.write()函数,允许你在文件中跳转,不同时间读取和写入文件的位,你需要打开文件。...打包工具通常具有基于插件的架构,并支持插件,允许导入和捆绑实际上不是 JavaScript 代码文件的“模块”。假设你的程序包含一个大型的 JSON 兼容数据结构。...当你在 JSX 表达式中使用 JavaScript 表达式时,你不仅限于前面示例中的字符串和布尔值等简单值。任何 JavaScript 值都是允许的。...JavaScript 的 Set 类是一个元素集合,就像数组一样,你不能单独使用Set作为一种类型,而是必须在尖括号内包含一个类型参数来指定集合中包含的值的类型。
换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript代码、JSON或者编译过的C/C++扩展。...11、函数 在JavaScript中,一个函数可以作为另一个函数接收一个参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。...在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它。 global 最根本的作用是作为全局变量的宿主。...它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同。 如果在模块中,返回的值是模块文件的路径。...# cd fs 15.1 异步和同步 Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync
(本文先不说),Node 对 HTTP 协议及相关 API 的封装比较底层,其仅能处理流和消息,对于消息的处理,也仅解析成报文头和报文体,但是不解析实际的报文头和报文体内容。...在 Node.js 中,文件和模块是一一对应的关系,可以理解为一个文件就是一个模块。...另外,在不区分大小写的文件系统或系统中,不同的文件名可能解析到相同的文件,但缓存仍会将它们视为不同的模块,会多次加载文件。如:require('./index')和 require('....文件模块 当加载文件模块时,如果按文件名查找未找到。那么 Node.js 会尝试添加.js 和.json 的扩展名,并再次尝试查找。如果仍未找到,那么会添加.node 扩展名再次尝试查找。...对于.js 文件,会将其解析为 JavaScript 文本文件;而.json 会解析为 JOSN 文件文件;.node 会尝试解析为编译后的插件文件,并由 dlopen 进行加载。
基于以上问题,在搜索相关资料并对比多个工具的实现方法后,决定使用『node cli』作为工具的实现方案,通过AST来精准识别有效中文和i18n方法调用。...跨平台使用 IDE(WebStorm、VS Code)无关 整体的实现思路分为以下几步: 1.通过设定好的搜索规则,找到符合要求的vue和js文件,支持忽略指定目录或文件 2.读取文件的内容,将js文件转换为...fs fs包含node提供的一系列文档操作api,本次用到的是fs同步文件读取方法 readFileSync。...3.将单个文件的校验结果合并后写入到 checkResult.json 文件中 4.3.2 核心代码 1.识别 vue 和 js 文件进行不同的逻辑处理 // parse.tsimport...在使用工具时,通过简单的配置即可检索指定项目指定路径下所有的 vue 和 js 文件,并且支持按文件路径来记录校验的结果并输出到 json 文件中。
核心模块编译进了二进制执行文件,在node进程启动时,部分核心模块就被直接加载在内存中,所以这部分核心模块引入时,文件定位和编译执行这2个步骤可以省略,并且在路径分析中优先判断,所以加载速度是最快的。...2.2.3 模块编译 以下提到的模块编译都是文件模块。 在node中,每个文件模块都是一个对象。编译和执行是引入文件模块的最后一个阶段。...3、JSON文件的编译 node利用fs模块同步读取JSON文件的内容之后,调用JSON.parse()方法得到对象,然后将其赋值给模块对象的exports,以供外部引用。...2、编译JavaScript核心模块 在引入核心模块的过程中,也经历了头尾包装的过程,然后才执行和导出了exports对象。与文件模块不同的是,核心模块是从内存中加载的。...2.4.1 包结构 完全符合CommonJS规范的的包目录应该包含以下这些文件: package.json:包描述文件 bin:用于存放可执行二进制文件的目录 lib:用于存放JavaScript代码的目录
3、// @ts-expect-error 新注释的添加 4、在条件语句中检测未调用的函数 5、编辑器提升 5.1 在 JavaScript 中 CommonJS 的自动引入 5.2 在代码操作的时候正确的保留换行符...5.3 添加快速修复缺失的函数返回表达式 5.4 支持 "Solution Style" tsconfig.json 文件 6、一些重大变化 主要是在 TypeScript 定义和书写规范上的改动和修复以前的...当然在最新的 3.9 版本中修复了这个问题。 1.1 全新的 awaited type awaited type 主要是对现在的 promise 更好的定义和使用。...在旧版本中,TypeScript 强制要求用户无论使用什么文件,都必须以 ECMAScript 的形式导入,例如: import * as fs from "fs"; 但在编写 JavaScript...现在有了如下自动引入的功能 const { readFile } = require('fs') 5.2 缺失的函数返回值的自动修复功能 在某些情况下,我们可能会忘记返回函数中的最后一条语句的值,尤其是在向箭头函数添加大括号时
英文 | https://medium.com/@Choco23/nine-super-useful-javascript-tricks-d40a0574e7e6 前言 在实际的开发工作过程中,我积累了一些常用的...、超级有用的Javascript技巧和代码片段,包括其他大神编译的JS使用技巧。...1.动态加载JS文件 在一些特殊的场景下,尤其是在一些库和框架的开发中,我们有时会动态加载并执行JS文件。 下面是使用Promise的简单封装。...实现Curry JavaScript 中的柯里化是将采用多个参数的函数转换为一系列仅采用一个参数的函数的过程。这样可以更灵活地使用函数,减少代码的重复,提高代码的可读性。...实现CommonJs规范 CommonJS规范的核心思想是将每个文件视为一个模块,每个模块都有自己的作用域,其中的变量、函数和对象都是私有的,外部无法访问。要访问模块中的数据,您必须导出并要求。
既然已经有其他运行时和环境在使用ES模块,那么Node.js支持这个JavaScript标准就更重要了。 Nodejs最初将ES模块作为一个保留实验特性的原因是为了提供时间让社区去讨论和反馈这种设计。...’) 和命名空间导出(import * as fs from ‘fs’)。...这项工作在进展中并且未来可能会发生改变 ES模块文件中的export语句可以指定引用的导入语句为默认导出或命名导出。...' .mjs结尾的文件在import语句和通过node命令行运行时都将被显式当作ES模块 并且,新版本的 --experimental-modules 添加了以下特性: .js文件中的import...但我们意识到社区已经接受了'main'字段,所以这也不太可能这样做因为很多包已经使用了module去引入ES模块的javascript,但可能没有评估在node.js中使用(因为文件名的扩展缺省的,或者代码里面包含
,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。...main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。...使用以下来搜索模块: npm search express 创建模块 创建模块,package.json 文件是必不可少的。...我们可以使用 NPM 生成 package.json 文件,生成的文件包含了基本的结果。...(yes) yes 以上的信息,你需要根据你自己的情况输入。在最后输入 “yes” 后会生成 package.json 文件。
是JavaScript的后端运行环境 Node.js中无法调用DOM和BOM等浏览器内置API 主要学习:JavaScript+Node.js内置API模块(fs、path、http等)+第三方API模块...fs.readFile()方法:用来读取指定文件中的内容。 fs.writeFile()方法:用来向指定文件中写入内容。...在JavaScript代码中,使用fs模块之前,需要先导入它: const fs = require('fs') 读取指定文件中的内容 fs.readFile('path','options',callback...如果想在事件处理函数中,访问与客户端相关的数据或属性,可以使用如下方式: server.on('request',(req)=>{ //req是请求对象,它包含了与客户端相关的数据和属性...同时,在使用 require() 导入自定义模块时,如果省略了文件的扩展名,则 Node.js 会按顺序分别尝试加载以下的文件: 按照确切的文件名进行加载 补全 .js 扩展名进行加载 补全 .json
Node.js test runner that lets you develop with confidence 3.3 调试 提前在入口测试文件 test/test.js 和入口文件 index.js...用最新的VSCode 打开项目,找到 package.json 的 scripts 属性中的 test 命令。鼠标停留在test命令上,会出现 运行命令 和 调试命令 的选项,选择 调试命令 即可。...测试用例 这个测试用例文件,主要就是主入口 index.js 导出的两个方法 readPackage, readPackageSync。异步和同步的方法。...分别是用 fsPromises.readFile fs.readFileSync 读取 package.json 文件。 用 parse-json[15] 解析 json 文件。...path 中文文档[19] path 模块提供了用于处理文件和目录的路径的实用工具。 5.3 fs 文件模块 很常用的模块。
领取专属 10元无门槛券
手把手带您无忧上云