七天学会NodeJS-第一天

手把手教你用STM32F103C8T6驱动CLRC663国产NFC模块(兼容A/B/F/15693卡) 本文详细介绍了如何使用STM32F103C8T6驱动国产CLRC663 NFC模块,支持ISO14443A/B、Felica和ISO15693协议。从硬件设计、协议适配到状态监控,提供完整的工程实现方案,适用于智能门锁、支付终端等应用场景。 阅读详情

NodeJS基础

什么是NodeJS

JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。

每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象。而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了fs、http等内置对象。

有啥用处

尽管存在一听说可以直接运行JS文件就觉得很酷的同学,但大多数同学在接触新东西时首先关心的是有啥用处,以及能带来啥价值。

NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的 DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。

如他所愿,NodeJS在服务端活跃起来,出现了大批基于NodeJS的Web服务。而另一方面,NodeJS让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。

因此,对于前端而言,虽然不是人人都要拿NodeJS写一个服务器程序,但简单可至使用命令交互模式调试JS代码片段,复杂可至编写工具提升工作效率。

NodeJS生态圈正欣欣向荣。

如何安装

安装程序

NodeJS提供了一些安装程序,都可以在nodejs.org这里下载并安装。

Windows系统下,选择和系统版本匹配的.msi后缀的安装文件。Mac OS X系统下,选择.pkg后缀的安装文件。

编译安装

Linux系统下没有现成的安装程序可用,虽然一些发行版可以使用apt-get之类的方式安装,但不一定能安装到最新版。因此Linux系统下一般使用以下方式编译方式安装NodeJS。

  1. 确保系统下g++版本在4.6以上,python版本在2.6以上。

  2. 从nodejs.org下载tar.gz后缀的NodeJS最新版源代码包并解压到某个位置。

  3. 进入解压到的目录,使用以下命令编译和安装。

    ?
    1
    2
    3
    $ ./configure
    $ make
    $ sudo make install

如何运行

打开终端,键入node进入命令交互模式,可以输入一条代码语句后立即执行并显示结果,例如:

?
1
2
3
$ node
> console.log( 'Hello World!' );
Hello World!

如果要运行一大段代码的话,可以先写一个JS文件再运行。例如有以下hello.js。

?
1
2
3
4
function hello() {
     console.log( 'Hello World!' );
}
hello();

写好后在终端下键入node hello.js运行,结果如下:

?
1
2
$ node hello.js
Hello World!
权限问题

在Linux系统下,使用NodeJS监听80或443端口提供HTTP(S)服务时需要root权限,有两种方式可以做到。

一种方式是使用sudo命令运行NodeJS。例如通过以下命令运行的server.js中有权限使用80和443端口。一般推荐这种方式,可以保证仅为有需要的JS脚本提供root权限。

?
1
$ sudo node server.js

另一种方式是使用chmod +s命令让NodeJS总是以root权限运行,具体做法如下。因为这种方式让任何JS脚本都有了root权限,不太安全,因此在需要很考虑安全的系统下不推荐使用。

?
1
2
$ sudo chown root /usr/local/bin/node
$ sudo chmod +s /usr/local/bin/node

模块

编写稍大一点的程序时一般都会将代码模块化。在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。

在编写每个模块时,都有require、exports、module三个预先定义好的变量可供使用。

require

require函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头)。另外,模块名中的.js扩展名可以省略。以下是一个例子。

?
1
2
3
4
5
6
var foo1 = require( './foo' );
var foo2 = require( './foo.js' );
var foo3 = require( '/home/user/foo' );
var foo4 = require( '/home/user/foo.js' );
 
// foo1至foo4中保存的是同一个模块的导出对象。

另外,可以使用以下方式加载和使用一个JSON文件,模块名中.json扩展名不可省略。

?
1
var data = require( './data.json' );
exports

exports对象是当前模块的导出对象,用于导出模块公有方法和属性。别的模块通过require函数使用当前模块时得到的就是当前模块的exports对象。以下例子中导出了一个公有方法。

?
1
2
3
exports.hello = function () {
     console.log( 'Hello World!' );
};
module

通过module对象可以访问到当前模块的一些相关信息,但最多的用途是替换当前模块的导出对象。例如模块导出对象默认是一个普通对象,如果想改成一个函数的话,可以使用以下方式。

?
1
2
3
module.exports = function () {
     console.log( 'Hello World!' );
};

以上代码中,模块默认导出对象被替换为一个函数。

模块初始化

一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。

主模块

通过命令行参数传递给NodeJS以启动程序的模块被称为主模块。主模块负责调度组成整个程序的其它模块完成工作。例如通过以下命令启动程序时,main.js就是主模块。

?
1
$ node main.js
完整示例

例如有以下目录。

?
1
2
3
4
- /home/user/hello/
     - util/
         counter.js
     main.js

其中counter.js内容如下:

?
1
2
3
4
5
6
7
var i = 0;
 
function count() {
     return ++i;
}
 
exports.count = count;

该模块内部定义了一个私有变量i,并在exports对象导出了一个公有方法count。

主模块main.js内容如下:

?
1
2
3
4
5
6
var counter1 = require( './util/counter' );
var    counter2 = require( './util/counter' );
 
console.log(counter1.count());
console.log(counter2.count());
console.log(counter2.count());

运行该程序的结果如下:


1
2
3
4
$ node main.js
1
2
3

可以看到,counter.js并没有因为被require了两次而初始化两次。

二进制模块

虽然一般我们使用JS编写模块,但NodeJS也支持使用C/C++编写二进制模块。编译好的二进制模块除了文件扩展名是.node外,和JS模块的使用方式相同。虽然二进制模块能使用操作系统提供的所有功能,拥有无限的潜能,但对于前端同学而言编写过于困难,并且难以跨平台使用,因此不在本教程的覆盖范围内。

小结

本章介绍了有关NodeJS的基本概念和使用方法,总结起来有以下知识点:

  • NodeJS是一个JS脚本解析器,任何操作系统下安装NodeJS本质上做的事情都是把NodeJS执行程序复制到一个目录,然后保证这个目录在系统PATH环境变量下,以便终端下可以使用node命令。

  • 终端下直接输入node命令可进入命令交互模式,很适合用来测试一些JS代码片段,比如正则表达式。

  • NodeJS使用CMD模块系统,主模块作为程序入口点,所有模块在执行过程中只初始化一次。

  • 除非JS模块不能满足需求,否则不要轻易使用二进制模块,否则你的用户会叫苦连天。

基于Cesium移动的天空云 天空中的云朵也算是一种天气气候的效果,它能更加逼真的反映当前的天气状况,可以是白云朵朵,也可以是乌云密布,结合其他天气效果,可以组合形成较为真实的三维可视化场景。 阅读详情

相关推荐

基于FPGA的示波器设计

ADC 、DAC、FPGA、LCD液晶、示波器

FDL_AQ的博客 1万+

NodeJS走起

NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提

vigor(软件开发) 1178

个人整理的数据集(手写中文数据、发票数据、快递单数据、车牌数据)

本人在工作生活中收集了各个方面比较多的真实的数据集如下: 一、手写中文数据集 1、档案类数据: 此数据集为手写档案数据,数量较大,大约128G,图像均未标注。 ex: 2、手写作文数据: 此数据集为手写作文数据,是大约800M左右,图像按行提供位置和内容标注,十分珍贵。 ex: 二、发票数据集: 1、增值税发票 此数据集包含了大量真实的增值税发票数据,大约9G,标注了发票位置数据,未提供详细标注。 ex: 2、购车发票 此数据集未提供标注。

weixin_43143224的博客 5882

【NodeJs-5天学习】第一天篇① —— 第一次认识NodeJs

篇①我们主要初步了解了浏览器背后的JavaScript,借此来引入NodeJs —— 一个用JavaScript来开发后端服务的运行环境。 并且了解到NodeJs的优缺点以及我们能基于它来做些什么东西。 同时博主也推荐一些书籍,建议自行快速翻阅。这里主要是先有个概念,后面我们再深入学习。

单片机菜鸟爱学习的博客 2010

MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)

目录 MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载) MQTT(二)在windows64位上安装Python环境 MQTT(三)Python客户端+net客户端+net服务端 简单通信 MQTT(四)树莓派开机自动运行Python客户端 MQTT(五)EMQ开源MQTT消息服务器 1 什么是 MQTT ? MQTT(Message Que...

pw的博客 10万+

NeurIPS‘25新研究!PINN+GNN强强联手,模型精度飙升50%!

物理图神经网络研究取得重大进展!UCLA团队提出的PhysGNN架构在NeurIPS'2025上引发关注,该模型成功融合PINN的物理约束优势与GNN的图结构处理能力,解决了工程仿真中的关键瓶颈。研究显示,PhysGNN在城市热网预测中误差降低42%,电网负荷模拟的物理规则违反率下降68%。同步解析的SyncTREE模型则创新性地将RC树物理特性融入GNN,实现毫秒级IC时序分析;HSPGNN模型通过嵌入偏微分方程,显著提升多变量时间序列填补精度。

m0_73122726的博客 1023

7天学会Node.JS,Node.JS从0到1,Node.JS入门到精通

100-day6-04-art-template中的include-extend-block语法.mp4。55-day4-05-在express中配置使用art-template模板引擎.mp4。54-day4-04-express中的static-server静态资源服务.mp4。104-day6-08-处理注册页面-配置body-parser.mp4。110-day6-14-express-session使用补充.mp4。74-day5-03-package-lock文件的作用.mp4。

1333

手把手教你理解特斯拉Model 3的域控制器架构:RBCM如何成为“多面手”?

本文深入解析特斯拉Model 3的域控制器架构,重点介绍右车身域控制器(RBCM)如何整合车身电子系统功能。RBCM作为多任务处理中枢,管理空调系统、尾部电气设备和超声波雷达等关键功能,展现了特斯拉在汽车电子架构上的创新设计。文章详细探讨了RBCM的硬件架构、功能版图及信号网络,揭示其如何通过高性能MCU和智能开关技术实现功能集中与效率提升。

weixin_30919429的博客 384

来自阿里的,7天学会(废)nodejs教程

点击上方关注前端技术江湖,一起学习,天天进步前端开发一定要学习服务端知识,否则很容易被后端同学忽悠的哦。当然这也是我们成为全栈必须要掌握的知识。今天推荐一个适合新手的免费node学习教程...

zz_jesse的博客 3558

飞牛NAS打造成童年经典游戏机

这篇文章介绍如何使用飞牛NAS搭建经典游戏模拟器。首先需开启Docker并下载RetroArch-web镜像,随后创建容器并设置端口映射。启动后上传游戏ROM文件(如NES格式),在模拟器中加载即可游玩。文章以修改版坦克大战为例,详细说明按键配置方法。同时还提到公网访问需配置DDNS或使用ZeroTier内网穿透。通过这套方案,用户可以在NAS上重温红白机等经典游戏体验。

dgnankai的专栏 886

【Mode Management】AUTOSAR架构下RH850-F1KM芯片深度休眠配置实践

AUTOSAR架构下RH850-F1KM芯片深度休眠配置实践

qq_36056498的博客 1091

Node.js学习历程

一直做后台开发的我,一直觉得WEB前端开发很神秘,便打算花上一个月业余时间学习了Node.js和Javascript。至于为什么选择Node.js,主要是考虑到Node.js是服务器端的Javascript脚本语言,这对于我一个对浏览器客户端开发毫无经验的人来说,学习更容易些,不需要再学一门服务器端脚本语言,可以节省学习时间。同时在Node启动的很短时间内,社区就已经贡献了大量的扩展库(模块)。其

crazy_samba的专栏 919

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

七天学会NodeJS——第一天

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:http://nqdeng.github.io/7-days-nodejs Node.js 是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。Node.js采用Google开发的V8内核运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性...

葡萄城技术团队博客 669

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

七天学会NodeJS项目常见问题解决方案

七天学会NodeJS项目常见问题解决方案 7-days-nodejs 七天学会NodeJS 项目地址: https://gitcode.com/gh_mirrors/7d/7-days-nodejs ...

gitblog_00001的博客 876

【亲测免费】 《七天学会NodeJS》教程

《七天学会NodeJS》是一本面向NodeJS新手的入门教程,涵盖了使用NodeJS开发各种程序所必要的知识。本教程旨在帮助初学者快速掌握NodeJS的基础知识和开发技能。 ## 项目快速启动 以下是一个简单的NodeJS应用示例,展示了如何快速启动一个NodeJS项目。 ### 安装NodeJS 首先,确保你的系统上已经安装了NodeJS。如果没有安装,可以从[NodeJS官方网站](htt...

gitblog_00878的博客 551

《七天学会NodeJS》项目教程:从零到精通的NodeJS学习指南

《七天学会NodeJS》是一个专为NodeJS初学者设计的开源教程项目,旨在通过七天的系统学习,帮助开发者快速掌握NodeJS的核心概念和实用技能。本教程采用循序渐进的方式,从基础概念到高级应用,全面覆盖NodeJS开发的各个方面。 ## 项目结构分析 ```mermaid graph TD A[7-days-nodejs] --> B[README.md] A --> C[i...

gitblog_00090的博客 350

七天学会NodeJS

七天学会NodeJS

杨名天吓 1139

windows下《七天学会NodeJS》学习笔记之一--NodeJS基础

什么是NodeJS。浏览器可以解析JS,NodeJS也可以解析JS,它就是一个JS的解析器。浏览器利用JS操作DOM,而NodeJS利用JS操作磁盘文件或搭建HTTP服务器。NodeJS的作者创造NodeJS的目的是为了实现高性能的Web服务器,所以他首先看重的是事件机制和异步IO模型的优越性。

fm2005的专栏 9354

NodeJS入门文档推荐

我觉得下面文章讲的非常不错,适合nodejs入门学习。七天学会NodeJS

taoerchun的专栏 2726

nodejs 前端 返回数组给_七天学会NodeJS系列教程之【异步编程】(五)

来源 |阿里巴巴国际站前端技术部NodeJS最大的卖点——事件机制和异步IO,对开发者并不是透明的。开发者需要按异步方式编写代码才用得上这个卖点,而这一点也遭到了一些NodeJS反对者的抨击。但不管怎样,异步编程确实是NodeJS最大的特点,没有掌握异步编程就不能说是真正学会了NodeJS。本章将介绍与异步编程相关的各种知识。回调在代码中,异步编程的直接体现就是回调。异步编程依托于回调...

weixin_42364301的博客 298

七天学会Node.js(汇总)

七天学会Node.js(汇总) 文章目录七天学会Node.js(汇总)1. NodeJS基础什么是NodeJS有啥用处如何安装安装程序编译安装如何运行权限问题模块requireexportsmodule模块初始化主模块完整示例二进制模块小结2. 代码的组织和部署模块路径解析规则包(package)index.jspackage.json命令行程序LinuxWindows工程目录NPM下载三方包安装命令行程序发布代码版本号灵机一点小结3. 文件操作开门红小文件拷贝大文件拷贝API走马观花Buffer(数据块)

qq_43456781的博客 1186

七天学会NodeJS:从零开始的JavaScript服务器端开发完整指南

想要快速掌握NodeJS服务器端开发吗?这个七天学习计划为你提供了一条清晰的学习路径!NodeJS作为JavaScript的服务器端运行时环境,让前端开发者能够使用熟悉的语言构建高性能后端应用。通过这个精心设计的七天教程,你将系统学习NodeJS的核心概念和实用技能,从基础安装到实际项目开发,一步步成长为合格的NodeJS开发者。 ## 🚀 第一天:NodeJS基础入门 开始你的NodeJS

gitblog_00299的博客 669
上一篇: Node.js入门-npm安装以及需要的modules
下一篇: 七天学会NodeJS-第二天
dreamjava9213
博客等级 码龄16年 7粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值