nodejs和js的关系
<p>Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。</p><p>JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言。js(JavaScript)是一种高级的、解释型的编程语言;它是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。</p>
<p>传统的js是运行在浏览器上的,因为浏览器内核分为两个部分:</p>
<ul>
<li>渲染引擎---渲染HTML和CSS</li>
<li>JavaScript 引擎---负责运行 JavaScript</li>
</ul>
<p>如果要执行JavaScript代码,需要一个js引擎,你可以安装一个浏览器(内置js引擎),或nodejs环境(内置js引擎),如果你在js代码中调用了浏览器提供的API,则必须安装一个浏览器,若调用了nodejs API,则必须安装nodejs环境,然后以各自规定的方式加载、执行JavaScript代码。</p>
<p><img src="https://img2020.cnblogs.com/blog/1500466/202110/1500466-20211012171422465-349642301.png"></p>
<p>node.js与js的区别:</p>
<p>1、node.js是平台,Js是编程语言;</p>
<p>2、js是客户端编程语言,需要浏览器的JavaScript解释器进行解释执行;</p>
<p>3、node.js是一个基于Chrome JavaScript运行时建立的平台,它是对Google V8引擎进行了封装的运行环境;</p>
<p>4、node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似JavaScript的结构语法进行编程,在node.js上运行。</p>
<p>5、node.js与js组成不同:</p>
<p>JavaScript:</p>
<ul>
<li>
<p>ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)</p>
</li>
<li>
<p>DOM(一些操作页面元素的方法)</p>
</li>
<li>
<p>BOM(一些操作浏览器的方法)</p>
</li>
</ul>
<p>Node.js:</p>
<ul>
<li>
<p>ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)</p>
</li>
<li>
<p>OS(操作系统)</p>
</li>
<li>
<p>file(文件系统)</p>
</li>
<li>
<p>net(网络系统)</p>
</li>
<li>
<p>database(数据库)</p>
</li>
</ul>
<p>6、顶层对象不同</p>
<p>在JS中的顶层对象是window对象,但是在node中没有什么window对象,node中的顶层对象是global对象。这就是二者的差异性。</p>
<p>在window对象中,定义一个全局变量是可以通过Window来访问的,但是在node中是不能通过global对象来访问的</p>
<p>优缺点:</p>
<p>1.原生js运行文件依赖于浏览器;</p>
<p>2.nodejs运行文件的时候服务为终端;</p>
<p>3.原生js有兼容性问题,nodejs不存在兼容性问题;</p>
<p>4.nodejs可以进行本地的读写,服务器搭建,连接数据库等,而原生js无法做到。</p>
<p>nodejs的优点:在项目中相当于中间层的使用</p>
<div class="cnblogs_code"><img id="code_img_closed_30da32a6-7993-4c58-8c5c-39ae4e1885d1" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_30da32a6-7993-4c58-8c5c-39ae4e1885d1" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_30da32a6-7993-4c58-8c5c-39ae4e1885d1" class="cnblogs_code_hide">
<pre>(1<span style="color: rgba(0, 0, 0, 1)">)使用node开发还可以使用node自有配套的npm包管理工具:
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
Node.js 的使用包管理器 npm来管理所有模块的安装、配置、删除等操作,使用起来非常方便。
(</span>2<span style="color: rgba(0, 0, 0, 1)">)node本身就是一个服务端的框架,对于一些简单的项目,我们可以不需要后端配合,直接用node进行数据库的增删改查(但是我们一般不使用这个功能);
(</span>3<span style="color: rgba(0, 0, 0, 1)">)nodejs是一个服务js平台,有自身带的npm(基于 Node.js的前端项目包管理工具),有第三方的grunt(基于 Node.js的前端项目构建工具即即脚手架)、有第三方的express(路由功能)等强大的代码与项目管理应用。还有自身带的webpack(基于 Node.js的前端项目部署打包工具),v8(谷歌客户端浏览器javascript引擎)等强大的功能。
npm(包管理工具)是基于 Node.js的前端项目包管理工具,是项目中对各种程序包的依赖管理,传统的开发项目主要是后端,现在技术在更新,前端有了框架的开发模式管理,也需要用包管理工具的思想去管理,目的是简化第三方程序包在项目中引用复杂化。前端的js包是全世界JavaScript 天才开发共享的各种代码模块,把这些代码模块都按照一个独立的软件功能统一在一个库中,一个代码模块是一个程序包(</span><span style="color: rgba(0, 0, 255, 1)">package</span><span style="color: rgba(0, 0, 0, 1)">,即代码模块)。
</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>nodejs类比Java中:JVM</p>
<h4> 详述:</h4>
<p>就前端来说nodejs具有划时代的意义,</p>
<p>做前端的没用过nodejs都不好意思说自己是前端,</p>
<p>做后端的没听过nodejs,</p>
<p>或者说不出nodejs和java的优缺点,也不是一个合格的后端。</p>
<p> </p>
<p>nodejs不是一个js框架,千万不要认为是类似jquery的框架,</p>
<p>nodejs是js运行时,运行环境,类比java中jvm,</p>
<p>java的开端是什么,无疑是jvm,自从有了jvm,java才能吹牛说自己是“一次编写处处运行”,</p>
<p>不管你是windows还是linux,只要安装了对应版本的jvm都可以运行.class文件。</p>
<p> </p>
<p>同样nodejs的作用和jvm的一样一样的,也是js的运行环境,不管是你是什么操作系统,</p>
<p>只要安装对应版本的nodejs,那你就可以用js来开发后台程序。</p>
<p> </p>
<p>这具有划时代的意义,意味着一直以来只能在浏览器上玩来玩去的js,可以做后端开发了,</p>
<p>从有了nodejs后就催生出一大批用js做后台开发的前端人员,这部分人员就是偏前端的“全栈程序员”。</p>
<p><em id="__mceDel">记住,nodejs是和jvm同等地位的js运行环境,打开了前端人员走向后端的道路。</em></p>
<h1>【js mvc框架】</h1>
<h4>类比Java中的:</h4>
<p>ssh1(struts1+spring+hibernate),ssh2(struts2+spring+hibernate),ssm(springmvc+spring+mybatis)</p>
<p>vue.js 是库,不是框架。</p>
<h4>详述:</h4>
<p>上面说到nodejs打开了前端开发人员开发后端的大门,而且nodejs类比jvm,</p>
<p>那么学习java的人都知道,学习完jvm(基础)后该学什么了?</p>
<p>对,框架,</p>
<p>java中有哪些框架,正如上面所说,ssh1,ssh2,ssm等等,</p>
<p>这些框架都mvc框架。</p>
<p> </p>
<p>既然nodej都有了,jvm出现了,那接下来就是js大神开始封装mvc框架,正如java大神开始封装mvc框架一样,</p>
<p>相对java流行了几种框架,nodejs对应的mvc框架就多的多了,</p>
<p>详见上面两篇文章,足够让你看的眼花缭乱。</p>
<p> </p>
<p>其中比较有名的是expressjs。</p>
<p> </p>
<h3>记住,当你看到这些js框架的时候,微微一笑,原来就是写mvc框架,基于nodejs:</h3>
<h3>Sails. js,Total.js,Partial.js,Koa. js,Locomotive. js,Express. js,Flatiron. js</h3>
<p> </p>
<h1>【js模块化】</h1>
<h4>相关概念:</h4>
<p>commonjs,amd,cmd,umd</p>
<h4> </h4>
<h4>相关框架:</h4>
<p>commonjs,seajs,requirejs,coolie</p>
<h4> </h4>
<h4>类比Java中的:</h4>
<p>import,对就是import。。</p>
<h4> </h4>
<h4>详述:</h4>
<p>如上所说,当有了nodejs(jvm),有了mvcjs(ssh)之后,</p>
<p>可想而知,每个mvcjs中会有多少js文件,这个时候js模块化就派上用处了,</p>
<p> </p>
<p>当有人和你说js模块化如何如何,感觉自己很吊的时候,甩他一句,不就是java中的import吗?</p>
<p>对,虽然在前端看来js模块化如何牛x,如何吊,但是就java来说就是import。</p>
<p> </p>
<p>但是js中的模块化,还有很多规范,比如commonjs,amd,cmd,umd,感觉头大了吧,</p>
<p>其实简单的来说,就是commonjs是运行在nodejs端,amd,cmd,umd是运行在浏览器,</p>
<p>其作用就是import各种js文件,把js模块化管理,可以理解为java中的包管理, </p>
<p>同样,一个mvc,js能做出来10+种框架,可想而知模块化,js也对应很多框架,</p>
<p>例如commonjs,requirejs,seajs等等。</p>
<h3>记住commonjs,requirejs,seajs等js模块化框架,遵循各种规范(amd,cmd,umd,commonjs),</h3><br><br>
来源:https://www.cnblogs.com/h-c-g/p/10930728.html
頁:
[1]