资讯专栏INFORMATION COLUMN

node入门基础

wujl596 / 2156人阅读

摘要:入门是一门基于的后台编程语言,由于其解析引擎为引擎,性能比较强大,再加上与前端语言关系更为密切的先天优势,使其在众多后台编程语言中脱颖而出。那么线程呢,线程,有时被称为轻量级进程,,是程序执行流的最小单元。

node入门

nodejs是一门基于JavaScript的后台编程语言,由于其解析引擎为V8引擎,性能比较强大,再加上与前端语言关系更为密切的先天优势,使其在众多后台编程语言中脱颖而出。

配置环境变量

编程语言都需要一个运行环境,程序员写出来的代码不可能什么都不做电脑就可以解析和运行,如果你是前端工程师,那么你应该了解HTML、CSS、JavaScript这些语言都必需运行在浏览器中,原因就是浏览器提供了这些代码运行的环境,即浏览器内置了这些代码的解析引擎,当前端代码运行在浏览器中,浏览器会调用不同的解析引擎对相应的代码进行解析和渲染,最后形成我们看到的网页。

那么对于后台代码亦然,由于没有浏览器的平台支持,后台代码要运行,必需有一个运行环境,node就是nodejs代码运行的环境,怎么让你的电脑拥有这么个环境呢?很简单,去node官网下载node应用程序,然后安装就行了(注意安装的时候要记住node的安装目录)。

运行环境有了,但是还面临一个问题,就是代码怎样才能在该环境中运行呢?参照前端代码,你只要双击打开后缀名为html的文件,该文件的代码就会自动在浏览器中运行了。但是后台代码可没这么简单,你需要借助命令提示符来让你的node代码跑起来,需要执行的命令为node

到这里你可能就会想,为什么执行这么一条命令,就能让代码执行在node环境中呢?这就需要了解环境变量了。命令提示符中非自带的命令到需要手动配置一个环境变量,执行该命令的时候系统会自动去事先配好的环境目录中寻找到相应的应用程序,然后执行该程序。

计算机=> 属性 => 高级系统设置 => 环境变量 => path新增(上文提到的安装node的目录)

nodejs是单线程后台语言

nodejs是基于JavaScript的后台语言,JavaScript本身就是单线程语言,那么nodejs理所当然的也就成了单线程后台语言,那么线程到底是个什么东西呢?

要解释线程,那么必需先了解另一个概念:进程。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。(该描述来自百度百科)通俗的说,打开任务管理器,你会看到很多进程,这些进程都或多或少占电脑的CPU和内存的,每个进程都是一段程序的实例,这些进程组成了计算机所有功能的实现。

那么线程呢,线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。(同样来自百度百科...)通俗的说,线程就是一个进程代码执行的一条线,在一个线程中,代码只能按一定顺序先后执行,不能同时执行,多线程感觉就像可以同时干很多事,切换上下文的速度比较快。

异步编程

由于node是单线程的,所以如果一段代码比较耗时,那么就会出现代码阻塞的情况,特别是后台中对于文件读写的操作,所以在后台开发中,能用异步(非阻塞)就不要用同步。因为你不知道一段异步代码什么时候执行完毕,所以在异步编程中,一般都会使用回调函数来控制代码的执行顺序,而异步编程也是node开发中的一个难点。

npm

后台开发还有一个非常重要的概念就是模块化开发,一个程序的功能需要分成很多模块,模块之间互不影响,否则在大型应用程序中开发根本无法进行。在后台开发中,我们无可避免地需要使用第三方模块来快速实现一些功能,那么怎么才能将别人写好的第三方模块添加到我们自己的项目当中呢?npm就是用来实现这个功能的。npm是包管理工具,用于管理第三方模块,是node自带的工具,无需多带带安装。

npm install   //本地安装模块
npm install  -g   //全局安装模块
npm uninstall     //卸载本地模块
npm uninstall  -g    //卸载全局模块
npm --help  //查看npm相关命令

使用npm全局安装的包不会被配置到环境变量中,由于npm已经存在环境变量中,相当于在npm下有一个快捷方式连接真实的文件

nrm切换下载地址

nrm是一个切换npm下载源的工具,使用前需要安装,能够切换到国内比较快的下载源

nrm ls 列出所有源
nrm test 测试所有源的下载速度
nrm use  切换不同的源
package.json 可以记录安装过哪些包

使用npm本地安装(在当前项目中使用),默认安装时会在当前目录查找node_module文件夹,如果找不到,则向上级目录查找,一直找到根目录,如果找到了,则安装到该文件夹,如果没找到,则会在当前目录新建一个node_module文件夹,将包装到该文件夹下;如果初始化一个package.json文件,就不会导致向上级目录查找

npm init -y //初始化(生成)package.json文件
npm install jquery --save   //项目依赖
npm install babel-core --save-dev   //开发依赖

项目依赖是指项目的代码想要正常的运行就需要该模块的支持,显然无论何时,项目依赖的包都应在存在于项目中;而开发依赖则指的是项目上线的时候该模块需要使用,上线之后这些包就不需要了,比如babel等代码编译的包。

当在不同的电脑上进行相同的项目开发的时候,如果有package.json文件记录了依赖的包,就只要执行npm install来安装所有项目需要使用到的第三方模块

注意安装的时候加了什么后缀,卸载的时候也要加同样的后缀

yarn

yarn和npm的功能一样,但是yarn是第三方工具,需要安装,那么为什么需要yarn呢?简而言之,yarn具有更快的包安装速度与更安全的包管理机制,如果想详细了解这两者的区别,可以阅读这篇文章:http://web.jobbole.com/88459/

初始化package.json

yarn init -y

安装包

yarn    //跑环境,相当于npm install
yarn add jquery   //默认就是项目依赖
yarn add babel-core --dev  //开发依赖

卸载包

yarn remove 
总结

以上只是node开发需要掌握的一些基础入门知识,了解这些后起码不会对node以及后台开发一无所知,这些知识能为你的node开发开个好头。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83921.html

相关文章

  • 后端API从入门到放弃指北

    后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 DI 浅谈...

    Jeffrrey 评论0 收藏0
  • 后端API从入门到放弃指北

    后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 DI 浅谈...

    sf190404 评论0 收藏0
  • 后端API从入门到放弃指北

    后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 DI 浅谈...

    Airmusic 评论0 收藏0
  • JS基础入门篇(二十四)—DOM(上)

    1.常用的节点类型,nodeType,attributes,childNodes。 1.元素节点 - 1 2.属性节点 - 2 3.文本节点 - 3 4.注释节点 - 8 5.文档节点 - 9 查看节点类型 node.nodeType(返回的是数字) 属性节点 元素.attributes(获取的是集合) 元素.attributes[0...

    Amio 评论0 收藏0
  • JS基础入门篇(二十四)—DOM(上)

    1.常用的节点类型,nodeType,attributes,childNodes。 1.元素节点 - 1 2.属性节点 - 2 3.文本节点 - 3 4.注释节点 - 8 5.文档节点 - 9 查看节点类型 node.nodeType(返回的是数字) 属性节点 元素.attributes(获取的是集合) 元素.attributes[0...

    ChristmasBoy 评论0 收藏0

发表评论

0条评论

wujl596

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<