首页编程node.js教程 使用Node如何配置文件(详细教程)

node.js教程 使用Node如何配置文件(详细教程)

编程之家2023-11-04143次浏览

亲爱的读者们,你是否对node.js教程和使用Node如何配置文件(详细教程)的相关问题感到困惑?别担心,今天我将为你解答这些问题,让你对此有更清晰的认识。

node.js教程 使用Node如何配置文件(详细教程)

如何实现Node.js脚手架(详细教程)

本篇文章主要介绍了如何实现一个简单的Node.js脚手架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

原因

在工作中,需要开发一个脚手架,用于给相关用户提供相关的开发便利性。

适合人群

对前端、Node操作有一定的了解,同时向了解脚手架开发过程或者需要自己实现一个脚手架的开发者。

目标

node.js教程 使用Node如何配置文件(详细教程)

开发一个简单的脚手架,能够提供给用户进行安装。

能够输出相关提示。

对用户文件进行读写操作。

在脚手架中使用Shell脚本。

步骤

开发脚手架

node.js教程 使用Node如何配置文件(详细教程)

脚手架的开发最开始过程与普通的前端项目相同,需要一个入口文件command.js和配置文件package.json。

与其他配置文件不同的是,需要在package.json文件中加上一下一项:

{

...,

"bin":{

"cm-cli":"command.js"

}

}在配置文件中增加了此项后,只需要在配置文件根目录下执行npm link命令,即可使用cm-cli--help命令来查看加载的cm-cli脚手架。

如果你发布了你的脚手架,那么在其他用户使用命令npm install-g cm-cli之后,便可以在全局下使用你的脚手架了。

对用户进行提示

在对注释和命令进行提示中,我们需要使用到commander包,使用npm install commander即可进行安装。(如果NPM版本低于5,则需要添加--save参数保证更新package.json配置文件)。

commander是一个提供用户命令行输入和参数解析的强大功能。有需要的可以阅读相关的库文档。在这里我介绍两个用的最多的方法。

option

能够初始化自定义的参数对象,设置关键字和描述,同时还可以设置读取用户输入的参数。具体用法如下:

const commander= require('commander');

commander.version('1.0.0')

.option('-a,--aaa','aaaaa')

.option('-b,--bbb','bbbbb')

.option('-c,--ccc [name]','ccccc')

.parse(process.argv);

if(commander.aaa){

console.log('aaa');

}

if(commander.bbb){

console.log('bbb');

}

if(commander.ccc){

console.log('ccc', commander.ccc);

}具体展示如下:

command

该方法能够在命令行增加一个命令。用户在执行此命令后,能够执行回调中的逻辑。具体用法如下:

commander

.command('init<extensionId>')

.description('init extension project')

.action((extensionId)=>{

console.log(`init Extension Project"${extensionId}"`);

// todo something you need

});具体展示效果如下:

对用户文件进行读写操作

通过上面的步骤,我们已经能够完成一个简单的脚手架了。下面,我们需要读取用户配置,同时为用户生成一些模板文件。

读取文件

现在,我们需要读取用户的cm-cli.json配置文件来进行一些配置。

我们可以使用Node.js的fs文件模块来对文件进度读操作,由于此处没有太多难点,因此略去。

写入文件模板

我们提前将模板文件存储在CDN上,再根据本地读取到的相关脚手架配置文件来进行模板的下载。

注:脚手架中读取的路径为使用者使用时当前路径,因此没有办法将模板文件存储在脚手架中进行读取。

我们可以使用诸如request这种库来帮助我们进行文件下载,简化操作步骤。执行npm install request`即可进行安装。

注:在文件写入时建议先判断文件是否存在,再进行覆盖。

使用Shell脚本

与Node.js提供的API函数来看,有些人更加倾向于使用Shell脚本来进行文件操作。幸运的是,我们也可以在我们的脚手架中引入node-cmd来启用对Shell脚本的支持。执行npm install node-cmd即可进行安装。

具体示例如下:

commander

.command('init<extensionId>')

.description('init extension project')

.action((extensionId)=>{

id= extensionId;

console.log(`init Extension Project"${extensionId}"`);

cmd.get(

`

mkdir-p static/${extensionId}

mkdir tmp

mkdir tmp/source-file

mkdir tmp/build-file

curl-o tmp/source-file/index.js https://xxxxxxxx.com?filename=index.js

touch tmp/source-file/index.css

curl-o tmp/build-file/server.js https://xxxxxxxx.com?filename=server.js

curl-o tmp/build-file/router.js https://xxxxxxxx.com?filename=router.js

curl-o tmp/build-file/package.json https://xxxxxxxx.com?filename=package.json

cp tmp/source-file/* static/${extensionId}

cp tmp/build-file/*./

rm-fr tmp

npm install

`,

(err, data)=>{

console.log(data)

if(!err){

console.log('init success');

return;

}

console.error('init error');

});

});我们可以快速的使用Shell脚本来进行文件夹的创建和文件模板的下载。

脚手架想要在终端能够快速执行,可以在package.json配置文件中增加相关字段。

脚手架需要能够读取相关终端输入,可以使用commander库来快速开发。

脚手架需要能够执行Shell脚本,可以使用node-cmd库来快速实现需求。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

使用JS+canvas如何制作圆锥

有关JS排序算法总结

有关js事件的循环机制(详细教程)

使用javascript如何实现QQ空间相册展示

如何自定义PC微信扫码登录

有关jade模板引擎的使用详情

有关JS希尔排序算法(详细教程)

在Node.js中如何使用DNS模块(详细教程)

本篇文章给大家详细介绍了Node.js中DNS模块的相关知识点,以及相关的实例代码做了分享,有兴趣的朋友参考下。

1. DNS

在Node.js中,提供DNS模块,以实现域名查找及域名解析的处理。

在DNS模块中,提供了三个主方法及一系列便捷方法。

resolve方法:用于将一个域名解析为一组DNS记录。

reverse方法:用于将IP地址转换为一组域名。

lookup方法:用于将一个域名转换成IP地址。

DNS模块中的其余便捷方法均为resolve方法的一种便捷形式。

2.使用resolve方法将域名解析为DNS记录

`DNS.resolve(domain, [rrtype], callback(err, address){...})`

domain参数为一个字符串,用于指定需要被解析的域名,可以包括子域名。

rrtypr参数为一个字符串,用于指定需要获取的记录类型,可指定的记录类型如下。

A,该参数值为默认值,当记录类型为A时,该记录将一个IPv4地址映射为一个域名。

AAAA,当记录类型为AAAA时,该记录将一个IPv6地址映射为一个域名。

CNAME,当记录类型为CNAME时,表示该记录为一个域名的别名记录,例如,一个www.example.com域名记录也许为一个example.com域名记录额别名记录。

MX,MX记录指向一个使用SMTP的域中的邮件服务器,例如,当你想person@domain.com邮件地址发送电子邮件时,domain.com域的MX记录中保存了发送该邮件时的邮件服务器地址。

TXT,TXT记录是为该域名附加的描述记录。

SRV,SRV记录用于为一个特定域中所有可用服务提供信息。

PTR,PTR记录用于反向地址解析,该记录将一个域名映射为一个IPv4地址。

NS,NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器进行解析。

回调函数有两个参数,err是域名解析失败时触发的错误对象,addresses参数为一个数组,其中存放了所有获取到的DNS记录。

3.为resolve方法定制的各种便捷方法

DNS.resolve4(domain, callback),获取IPv4地址

DNS.resolve6(domain, callback),获取IPv6地址

DNS.resolveMx(domain, callback),获取MX记录,邮件交换服务器记录

DNS.resolveTxt(domain, callback),获取TXT记录,域名附加的描述记录

DNS.resolveSrv(domain, callback),获取SRV记录,服务记录

DNS.resolveNs(domain, callback),获取NS记录,域名服务器记录

DNS.resolveCname(domain, callback),获取别名记录

4.使用lookup方法查询IP地址

当使用resolve4方法或者resolve6方法时,由于callback参数值回调函数中的addresses参数值数组中存放着所有获取到的IPv4地址或IPv6地址。因此DNS模块中提供了一个获取第一个被发现的IPv4地址或者IPv6地址的lookup方法

`DNS.lookup(domain, [family], callback(err, addresses, family){...})`

domain参数为一个字符串,用于指定需要解析的域名

family参数值为一个整数值,用于指定需要获取的IP地址类型,可指定的参数值为4或6,默认参数值为null,表示既可以获取IPv4,又可以获取IPv6

回调函数err参数值为获取地址失败时触发的错误对象,当域名不存在或查询失败时该错误对象的code属性值为ENOENT

addresses参数值为一个字符串,为获取到的IP地址

family参数值为4时,表示为一个IPv4地址,为6时,表示为一个IPv6地址。

5.使用reverse方法反向解析IP地址

在DNS模块中,使用reverse方法将一个IP地址反向解析为一组与该IP地址绑定的域名

`DNS.reverse(ip, callback(err, domains){...})`

ip参数值为一个字符串,用于指定需要解析的IP地址

回调函数的err为反向解析地址失败后的错误对象

domains参数值为一个数组,存放了所有获取到的域名

6. DNS模块中的各种错误代码

err参数值为执行各种解析或反向解析操作时触发的错误对象,可根据该错误对象的code属性值,即触发的错误代号判断出发了什么错误

ENODATA:DNS服务器返回一个没有数据的查询结果

EFORMERR:DNS服务器发现客户端请求查询时使用了格式错误的查询参数

ESERVFAIL:DNS服务器执行查询操作失败

ENOTFOUND:未发现任何域名

ENOTIMP:DNS服务器不能进行客户端所请求的查询操作

EREFUSED:DNS服务器拒绝进行查询操作

EBADQUERY:格式错误的DNS查询

EBADNAME:域名格式错误

EBADFAMILY:不支持的IP地址类型

EBADRESP:DNS答复的格式错误

ECONNREFUSED:不能建立与DNS服务器之间的连接

ETIMEOUT:与DNS服务器之间建立连接超时

EEOF:已到达文件底部

EFILE:读取文件失败

ENOMEM:没有足够的内存空间

EDESTRUCTION:通道已经被销毁

EBADSTR:字符串格式错误

EBADFLAGS:指定了错误的判断标志

ENONAME:指定的主机名不是数值格式的

EBADHINTS:指定的提示标志无效

ENOTINITIALIZED:c-ares类库初始化工作尚未完成

ELOADIPHLPAPI:加载iphlpapi.dll时触发了一个错误

EADDREGETNETWORKPARAMS:未发现GetNetworkParams函数

ECANCELLED:DNS查询操作被取消

7. DNS模块的基本使用

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

vue-router相关基础知识及工作原理

axios post提交formdata的实例

在vue组件中使用axios的方法

使用Node如何配置文件(详细教程)

这篇文章主要给大家介绍了关于Node实战之不同环境下配置文件使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面一起学习学习吧。

前言

在使用 Node.js编写一个完整的项目时,程序中往往需要用到一些可配置的变量,从而使得程序能在不同的环境中运行,而众所周知,在实际的项目会存在多个不同的环境,不同的环境下,一些配置是不相同的,如何在不同的环境下调用不同的配置,提高开发效率?下面话不多说了,来一起看看详细的介绍吧。

1. config-lite模块

首先引入一个配置模块config-lite,使用命令npm i config-lite--save安装。

通常我们会针对不同的环境,将配置写入不同的配置文件中,在Node项目下新建config目录,里面新建不同环境的配置文件,这里我以『开发』以及『生产』两个环境作为例子来讲解如何操作。

开发环境中,我们在config目录下新建两个文件:test.js和default.js,你可能会问,为啥没有生产机配置文件,因为生产机配置要在生产环境下再创建嘛。

在test.js配置文件中写入代码如下(PS.这里以mysql的配置为例):

// test.js

module.exports={

mysql:{

host:"localhost",

user:"lupeng",

password:"080910",

database:"b1imd"

}

};default.js里写入一些默认的配置文件,例如session的配置等。

// default.js

module.exports={

mysql:{

host:"10.20.141.220",

user:"lupeng",

password:"123456",

database:"b1imd"

},

session:{

secret:'keyboard cat',

resave: false,

saveUninitialized: true,

cookie:{

maxAge: 1000*60*60

}

}

};好了,配置文件写好了,如何使用呢?这里我们使用的 config-lite模块,这个模块是依据环境变量来选择不同的配置文件的,所以在使用之前我们需要修改package.json里的启动命令:

"scripts":{

"start":"NODE_ENV=production supervisor--harmony-i views/./bin/www",

"test":"NODE_ENV=test supervisor--harmony-i views/./bin/www"

},可以看到,上面有两条启动命令,一条是针对生产机,设置了NODE_ENV=production,一条是针对测试机,设置了NODE_ENV=test,当我们使用npm test启动项目的时候,config-lite会去抓取test.js配置,并且会与default.js里配置去合并,如果有相同的对象,会覆盖default.js里的配置。如上例子都有mysql的对象,那么这里会以test.js里的对象为准。

好了,下面来介绍一下如何在项目中使用config-lite模块,在app.js里代码如下:

//省略...

var config= require('config-lite')(__dirname);

//省略...

app.use(session(config.session));

console.log("mysql服务器:"+ config.mysql.host);// display mysql-config

//省略...引入之后,可以直接使用配置文件中的配置对象。

2.生产环境

那么在生产环境中,如何使用呢?上面已经介绍了config-lite基本原理以及用法,在生产环境的时候,我们只需要在生产机环境中config目录下新建production.js文件,然后使用启动命令npm start即可。

为了避免测试环境以及生产坏境配置文件混淆,可以通过.gitignore文件忽略配置文件,添加如下:

# config

config/*

!config/default.*这样,git会忽略除了default.js之外的配置文件,在本地开发环境中,可以创建多个配置文件测试使用,只需设置对应的环境变量即可。需要注意的是环境变量名需同配置文件名一样。

3. windows环境

也许你是一个多系统环境开发者,可能同时在Linux和windows环境下开发,由于windows下设置环境的变量的语法不太一样,所以可以在package.json启动命令中再加上两句,如下:

"scripts":{

"start":"NODE_ENV=production supervisor--harmony-i views/./bin/www",

"test":"NODE_ENV=test supervisor--harmony-i views/./bin/www",

"winStart":"SET NODE_ENV=production&&supervisor--harmony-i views/./bin/www",

"winTest":"SET NODE_ENV=test&&supervisor--harmony-i views/./bin/www"

}这样,如果部署在windows环境下,在config目录下新建production.js配置文件,启动命令npm winStart;如果部署在Linux或类Unix环境下,同样是创建production.js,启动命令npm start即可。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

详细解读React Native Flexbox布局

在vue单文件中有关引用路径有哪些方法?

详细介绍有关weex中的webpack.config.js改造

关于本次node.js教程和使用Node如何配置文件(详细教程)的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

北京vps,vps哪家的好开发公司app?开发app较好的公司有哪些