浅谈为什么vue前端项目要使用nodejs

一、传统的JavaScript

传统的js是运行在浏览器上的,因为浏览器内核分为两个部分:

渲染引擎---渲染HTML和CSS,

JavaScript 引擎---负责运行 JavaScript,随着技术的发展, Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快且性能好,同时由2009年5月Ryan Dahl开发的Node.js 诞生。

二、什么是Node.js?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。

Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。 Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

官网上对其特点描述为:

  1. 它是一个Javascript运行环境

  2. 依赖于Chrome V8引擎进行代码解释

  3. 事件驱动

  4. 非阻塞I/O

  5. 轻量、可伸缩,适于实时数据交互应用

  6. 单进程,单线程

相对于传统的JavaScript来说,Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎。我们知道 Apache + PHP 以及 Java 的 Servlet 都可以用来开发动态网页,Node.js 的作用与他们类似,只不过是使用 JavaScript 来开发,它大大提升了开发的性能以及便利。

(1)使用node开发还可以使用node自有配套的npm包管理工具:
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

Node.js 的使用包管理器 npm来管理所有模块的安装、配置、删除等操作,使用起来非常方便。

(2)node本身就是一个服务端的框架,对于一些简单的项目,我们可以不需要后端配合,直接用node进行数据库的增删改查(但是我们一般不使用这个功能);

(3)nodejs是一个服务js平台,有自身带的npm(基于 Node.js的前端项目包管理工具),有第三方的grunt(基于 Node.js的前端项目构建工具即即脚手架)、有第三方的express(路由功能)等强大的代码与项目管理应用。还有自身带的webpack(基于 Node.js的前端项目部署打包工具),v8(谷歌客户端浏览器javascript引擎)等强大的功能。

npm(包管理工具)是基于 Node.js的前端项目包管理工具,是项目中对各种程序包的依赖管理,传统的开发项目主要是后端,现在技术在更新,前端有了框架的开发模式管理,也需要用包管理工具的思想去管理,目的是简化第三方程序包在项目中引用复杂化。前端的js包是全世界JavaScript 天才开发共享的各种代码模块,把这些代码模块都按照一个独立的软件功能统一在一个库中,一个代码模块是一个程序包(package,即代码模块)。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块),使用包的结构使您能够轻松跟踪依赖项和版本。  官网: https://www.npmjs.cn/

webpack是基于 Node.js的前端项目部署打包工具。

grunt是基于 Node.js的前端JavaScript语言项目构建工具,即脚手架。一句话:构建项目自动化。对于需要反复重复的任务,例如压缩(minification)、编译、单元测试、linting等,自动化工具可以减轻你的劳动,简化你的工作。当你在 Gruntfile 文件正确配置好了任务,任务运行器就会自动帮你或你的小组完成大部分无聊的工作。官网:https://www.gruntjs.net/

Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。

三、Vue

首先vue.js 是库,不是框架,不是框架,不是框架。

Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。

Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。

vue.js 支持路由功能开发的 叫vue-route.js,vue.js支持数据请求功能开发的 叫vue-resource.js。

vue.js 下载过来直接在html中引入就能使用,并不一定要npm install vue,那仕么业务开发需求场景下需要使用NPM呢?NPM是仕么?

Vue.js可以在html里直接引用后使用,等到与Vue一起配合使用的第三方应用的库或框架多起来后,一个个从html里引入就不方便了,所有要借用node.js中的npm管理包的引入,是方便包管理。

使用Vue.js开发的前端项目如何部署?我们用到node.js中的程序打包工具比如webpack(node.js中的程序部署打包工具),可以直接require引入之后将不同模块打包成单个js文件。同时这些工具提供各种自动化处理,让前端开发更爽。

Vue.js是数据驱动,和JQuery思路不同,你几乎不需要自己进行复杂低效的dom操作,开发简介明了。从这一点上说,可以基本抛弃JQuery了。

Vue.js开发有第三方支持的项目构建工具,vue-cli脚手架

通过上面的分析,与其说是VUE需要借助NODE开发前端项目,不如换个思路,在NODE中集成VUE开发前端项目,所以,先安装Node,使用Node的npm先安装Vue,然后再安装vue-cli脚手架,最后通过vue-cli脚手架构建前端项目。

再扩展一下思路:

上述我们解读了Vue与Node的关系,从他们之间的关系,刨根问底,这个问题的本质是前端开发思想的问题,传统前端开发只是CSS、CSS3、HTML、HTML5、传统JS、面向对象JS(类似jQuery类库)的开发,前端技术在近几年发展迅速,如今的前端开发己不再是 10 年前写个 HTML 和 css 那样简单 了,新的概念层出不穷,比如 ECMAScript 6、 Node.js、 NPM、前端工程化、轻量级模板引擎、模块化(如vue模块vue-require.js)、组件化、预编译、双向数据绑定、路由(如vue路由vue-route.js、前端路由的框架通用的有 Director、Angular 的 ngRouter、React 的 ReactRouter)、状态管 理、动画、、 SSR、前后端分离开发等。这些新东西在不断 优化我们的开发模式,改变我们的编程思想。 随着这些技术的普及,出现一套可称为“万金油”的技术技被许多商业项目用于生产环境:

jQuery + RequireJS ( SeaJS ) + artTemplate (doT) +Gulp (Grunt)是一种前端开发方案

这套技术战以 jQuery 为核心,能兼容绝大部分浏览器,这是很多企业比较关心的,因为他们 的客户很可能还在用 IE7 及以下浏览器。使用 RequireJS 或 SeaJS 进行模块化开发可以解决代码依 赖混乱的问题, 同时便于维护及团队协作。使用轻量级的前端模板(如 doT)可以将数据与 HTML 模板分离。最后,使用自动化构建工具(如 Gulp)可以合并压缩代码,如果你喜欢写 Less、 Sass 以及现在流行的 ES 6,也可以帮你进行预编译。 这样一套看似完美无瑕的前端解决方案就构成了我们所说的传统前端开发模式,由于它的简 单、 高效、实用, 至今仍有不少开发者在使用。不过随着项目的扩大和时间的推移,出现了更复杂 的业务场景,比如 SPA (单页面富应用〉 、 组件解稍等。为了提升开发效率,降低维护成本,传 统的前端开发模式己不能完全满足我们的需求,这时就出现了如 Angular、 React 以及我们要介绍 的主角 Vue 。

从综合解决方案来讲,Node.js迈出第一步,为前端工程化开发奠定了基础,基于Node提供了项目脚手架、打包工具、包管理工具等等,基于Node诞生了Vue、Angular、 React等前端开发思想,以及组装搭配的前端开发方案。

在 Node.js 出现后,jQuery + RequireJS ( SeaJS ) + artTemplate (doT) +Gulp (Grunt)开发组合又有了改善,就是所谓的大前端,得益于 Node.js 和 JavaScript 的语 言特性, html 模板可以完全由前端来控制,同步或异步渲染完全由前端自由决定,并且由前端维 护一套模板,这就是为什么在服务端使用 artTemplate、 React 以及 Vue2 的原因。说了这么多,到 底怎样算是 SPA 呢?其实就是在前后端分离的基础上,加一层前端路由。

前端路由,即由前端来维护一个路由规则。实现有两种,一种是利用 url 的 hash, 就是常说的 锚点(刑, JavaScrip/通过 hashChange 事件来监听 url 的改变, IE7 及以下需要用轮询:另一种就是 HTML5 的 History 模式,它使 url 看起来像普通网站那样,以“/”分剖,没有#,但页面并没有 跳转,不过使用这种模式需要服务端支持,服务端在接收到所有的请求后,在fl指向同一个 html 文 件,不然会出现 404。因此, SPA 只有一个 ht时,整个网站所有的内容都在这一个 html 里,通过 JavaScript 来处理。 前端路由的优点有很多,比如页面持久性,像大部分音乐网站,你都可以在播放歌曲的同时 跳转到别的页面,而音乐没有中断。再比如前后端彻底分离。前端路由的框架通用的有 Director (ht刷://github.com/flatiron/director ),不过更多还是结合具体框架来用,比如 Angular 的 ngRouter, React 的 ReactRouter,以及本节要介绍的 Vue 的 vue-router。 如果要独立开发一个前端路由,需要考虑到页面的可插拔、页面的生命周期、内存管理等 问题。

Node的webpack打包的核心思想就是单页面富应用(SPA) 。 SPA 通常是由一个 h恤l 文件和一堆按需 加载的 js 组成,它的 html 结构可能会非常简单,比如:
<!DOCTYPE html>

<html lang=”zh-CN”>

<head>

<meta charset=”UTF-8”>

<title>webpack app</title>

<link rel=” stylesheet” href=”dist/mai口 .css ”>

</head>

<body>

<div id=” app”></div> <script type=”text/javascript” src=”dist/main.j s ”></lcript>
</body>

</html>
看起来很简单是吧?只有一个<div>节点,所有的代码都集成在了神奇的 main扣 文件中,理论 上古可以实现像知乎、淘宝这样大型的项目。 在开始讲解 webpack 的用法前,先介绍两个 ES6 中的语法 export 和 impo此, 因为在后面会大 量使用,如果对它不了解,可能会感到很困惑。 export 和 import 是用来导出和导入模块的。 一个模块就是一个js 文件,它拥有独立的作用域, 里面定义的变量外部是无法获取的。比如将一个配置文件作为模块导出,示例代码如下:

以上几个示例中,导入的模块名称都是在 export 的文件中设置的,也就是说用户必须预先知道 这个名称叫什么,比如 Config、 add。而有的时候,用户不想去了解名称是什么,只是把模块的功能 拿来使用,或者想自定义名称,这时可以使用 export default 来输出默认的模块。示例代码如下:

Node+Vue+ VueRequire+VueRoute+VueCli就是流行的前端开发方案。by https://www.cnblogs.com/hmit/p/12036587.html

Node.js和Vue相关推荐

  1. 关于node.js 和vue.js的安装、卸载、浏览器测试问题?

    关于node.js 和vue.js的安装.卸载.浏览器测试问题? 最近忙于深入研究vue.js框架的适用问题,所以顺带也有必要系统的研究一下node.js是怎么一回事?! 闲话不多说,直接上文章链接: ...

  2. 基于node.js和vue的前后端分离影院售票系统电影院影片管理

    1,项目介绍 基于 node.js和vue 的影院售票系统拥有两种角色,分别为管理员和用户. 用户:热映.即将上映.电影和影院全局搜索.评论.选座.购票.点赞.收藏.订单等一系列购票功能 管理员:用户 ...

  3. 体验使用node.js创建vue+Element-UI项目

    1.首先去node.js官网下载系统对应的node.js版本. 2.安装淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao. ...

  4. php node.js django,Vue.js和Django搭建前后端分离项目示例详解

    本篇文章主要介绍了Django+Vue.js搭建前后端分离项目的示例,具有一定参考价值,有兴趣的可以了解一下 在写这篇文章的时候,顺带学习了一下关于Markdown的使用方法. 笔者是个渣渣,一切都是 ...

  5. Node.js+Express+Vue+MySQL+axios的项目搭建

    1 基本搭建 创建vue项目之前需要先安装Node.js和MySQL数据库 1.1 vue脚手架安装 npm i vue -g npm i @vue/cli -g//初始化vue项目 vue crea ...

  6. node.js基于Vue的英语在线学习网站 vscode+mysql

    该系统的基本功能包括管理员.学生.教师三个角色功能模块. 对于管理员可以使用的功能模块主要有首页.个人中心,学生管理.教师管理.班级管理.课程管理,在线学习管理.作业管理.试卷管理.试题管理. 在线论 ...

  7. (附源码)node.js基于vue的化妆品销售管理系统的设计与实现 毕业设计151314

    化妆品销售管理系统 摘要 近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用.简单的流程.便捷可靠的支付方式.快捷畅通的物流快递.安全的信 ...

  8. node.js和vue.js

    文章目录 node.js 什么是node.js node.js中的javascript node.js能做什么 nodjs安装[windows] vue.js 什么是vue.js 为什么需要vue.j ...

  9. 基于node.js和Vue的运动装备网上商城

    摘  要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准 ...

最新文章

  1. 解题报告:【kuangbin带你飞】专题十一 网络流
  2. 为何那么多人的网名都叫易天啊
  3. 几乎死循环的存储过程
  4. 链接 动态链接 静态链接
  5. log4j2 配置文件
  6. html5游戏制作入门系列教程(四)
  7. java读写excel文件poi_Java利用POI读写Excel文件工具类
  8. 掌趣科技:游戏《一拳超人:最强之男》累计收入近5亿元
  9. Centos6.X 安装MongoDb
  10. trend函数用oracle实现,excel线性回归拟合线Trend函数是这样来使用的
  11. mac ae 汉化
  12. 背景建模之高斯混合模型
  13. 从春运迁徙图看疫情变化
  14. 电路中负电源的注意事项
  15. 企业员工管理系统 一:项目介绍
  16. space-between时尾行排版优化
  17. 如何降低计算机版本,苹果系统怎么降级到好用的老版本
  18. 计算机网络——cookie、session、token原理
  19. 怎么压缩图片的体积大小,4款软件分享
  20. jsp1159金融交易银行产品股票基金

热门文章

  1. 将现有的系统环境文件打包成Docker镜像文件
  2. 数据存储---GreenPlum实践
  3. iOS 模拟轮胎滚动3D动画效果
  4. U.2接口和M.2接口有什么区别
  5. 用PPLIVE看世界杯的方法
  6. 人脸识别——脸部属性辅助(属性引导triplet loss)
  7. 国产神器天语Android双核手机W700线下赏机经历
  8. 张兴个人简历计算机,张兴-合肥工业大学电气与自动化工程学院
  9. linux使用ps下查看进程运行的时间 【转】
  10. CodeForces - 140E New Year Garland (DP 计数)