一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手

简介: 《一统江湖的大前端》系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新。如果你对前端的理解还是写写页面绑绑事件,那你真的是有点OUT了,前端能做的事情已经太多了, 手机app开发 , 桌面应用开发 , 用于神经网络人工智能的库 , 页面游戏 , 数据可视化 , 甚至 嵌入式开发 ,什么火就搞什么,活脱脱一个蹭热点小能手。

《一统江湖的大前端》系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新。如果你对前端的理解还是写写页面绑绑事件,那你真的是有点OUT了,前端能做的事情已经太多了, 手机app开发 , 桌面应用开发 , 用于神经网络人工智能的库 , 页面游戏 , 数据可视化 , 甚至 嵌入式开发 ,什么火就搞什么,活脱脱一个蹭热点小能手。如果你也觉得前端的日常开发有些枯燥,不妨一起来看看前端的另一番模样。

img_4bb4848189a52e346a67d405c1cd1fcb.jpe

为什么你总是下不了班

大部分工程化的项目为方便维护,大多都会采用前后端分离的开发方式,而前端和后端的工作基本也是同时下发的,这时前端开发人员就会很尴尬,后端在干活的时候,领导几乎一定会让你先做个静态页面看看,这时候你和后端之间可能只是约定了接口(当然也可能连接口都没约定,那我只能祝你幸福了),并没有数据的传输,没法直接拿到填充网页的数据,如果一次将前端代码写到位,那么打开网页时轻则页面提示没有获取到数据,重则直接报错退出脚本。

而真正的问题在于静态页面做起来是非常快的,以至于你的领导会认为当你把静态页面中加入javascript的逻辑部分的代码后也应该非常快,而实际上逻辑部分的代码量和联调的工作量几乎是写一个静态页面的5-10倍
基本上前端的一个需求的开发至少需要经历静态页面——>业务逻辑+静态数据——>业务逻辑+http请求及数据处理这几种不同形态才能交工,那么真实的时间轴变成了这样:

角色 阶段1 阶段2 阶段3 阶段4 阶段5 阶段6
后端 写后台代码 写后台代码 回家睡觉 回家睡觉或忙其他事 修改前端提交的bug 重复4-5直到能上线
前端 写静态页面 漫无目的改样式 写前端逻辑 边开发前端边测试接口 漫无目的改样式 重复4-5直到能上线

无论从哪个方面看,前端都是一个打杂的活,无论从哪个角度看,前端也都是一个小弟脸,下不了班好像也是应该的。

Node.js

Node火起来的时候,前端就流行这样一句话:不会Node.js的前端,是不完整的,简单地说,Node.js将javascript能力扩展至服务端的关键一步,js也是从此开始了自己无孔不入的风骚操作,网上关于如何使用Node.js搭起一个本地服务器数不胜数,本篇中使用express框架来快速搭建Mock服务器。
img_54c990e88ea488deff630c9287f98c4c.jpe

Mock.js

Mock.js(github仓库地址)是一个生成Mock数据(也就是虚拟数据)js库,语法简单明了却非常好用,支持前端和服务端两种环境引用,感兴趣的读者可以点击上面链接进行学习,官方Wiki提供了全套文档,最多1小时就可以上手。

工作方式 优势 劣势
客户端 操作方便,纯前端本地即可实现 1.不易进行接口管理 2.协作人员无法获得Mock数据
服务端 1.前端代码几乎不需改动 2.其他人员可访问获得Mock数据 需要搭建Mock服务器,相较前者稍复杂

简单浏览一下其使用方式:
img_7fde230149e3442225ac5d9cba169024.jpe

# 安装
npm install mockjs
// 使用 Mock
var Mock = require('mockjs')
var data = Mock.mock({
    // 属性 list 的值是一个数组,其中含有 1 到 10 个元素,每个元素均包含id,name,description属性
    'list|1-10': [{
        'id|+1': 1,// 属性 id 是一个自增数,起始值为 1,每次增 1
        'name': '@cname',//占位符语法,生成一个中文名称
        'description|3-5':'@csentence',//占位符语法,生成3-5个中文句子
        'area':'@province',//省份占位符,将随机生成省份名称
    }]
})
// 输出结果
console.log(JSON.stringify(data))

前端的任务到底是什么

前端开发的本质,是数据的采集和数据的呈现,即把用户提交的数据准确安全地发送给服务器,把服务器传递的数据按照设计图展示在界面上,无论是否界面是否经过CSS的美化,是否经过交互设计的易用性优化,最本质的东西是一样的。
换句话说,你需要做到的是后端给的数据正确时,确保将其按设计稿展示出来,后端给的数据不正确时,给出提示并尽可能不要让脚本报错退出。

使用Nodejs和Mockjs搞事情

建议的做法是:使用node.js框架express快速搭建服务器,与后端人员约定好接口后,使用Mock.js在服务端生成各类型虚拟数据,前端开发人员直接对接Mock服务器

你应该做的,是一次性将前端代码写到位并能够快速定位联调异常,然后回家睡觉,而不是漫无目的劳作和等待跟其他人互相扯皮。

1.安装node.js
+ 安装后打开cmd命令行,输入`node -v`, 若正确显示版本号则安装成功。

附件中包含: nodeV8.9.4版本windows安装包

2.安装其他依赖包
  • yarn(替代npm的包管理工具): npm install yarn(可选)
  • express (express框架): npm install express -g
  • express-generator (express项目生成插件): npm install express-generator -g
  • mockjs(模拟数据生成库): npm install mockjs

若安装速度较慢,可切换npm源为cnpm或使用Yarn进行包管理

3.生成新的express项目并编写服务端

本篇力求简单粗暴,只讲使用不讲express目录结构,感兴趣的同学可自行研究

3.1 在指定路径下打开命令行,输入express mockserver,即可生成名为mockserver的项目

3.2 打开app.js文件,在 var app = express() 之后加入如下代码,屏蔽跨域:

            app.all('*', function(req, res, next) {
                res.header("Access-Control-Allow-Origin", "*");
                res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
                next();
            });

3.3 仿照users.js文件的格式及其在app.js文件中的路由挂载方式(任何一个熟练地代码搬运工肯定看得懂),引入mockjs,生成需要的随机数据,当接收到前端发送的请求时,返回生成的数据:

//服务端响应代码片段/routes/operationboard.js:
//业务逻辑为查询系统告警信息列表
//node服务器启动后,请求地址为:127.0.0.1:3000/operationboard/systemwarn
//3000端口为express默认启动端口

var express = require('express');
var router = express.Router();
var Mock = require('mockjs');
var Random = Mock.Random;

router.get('/systemwarn', function (req, res, next) {
  var data =Mock.mock({
      'list|20':[{
            'id|+1':1,
            'serial_number|1-100':1,
            'warn_number|1-100':1,
            'warn_name|1':['流水线编排服务异常','磁盘占用超过阈值'],
            'warn_level|1':['紧急','重要'],
            'warn_detail':'环境IP:10.114.123.12,服务名称:XX',
            'create_time':Random.datetime(),
            'finish_time':Random.datetime(),
            'contact|4':'abc'
        }] 
      });

  res.send({
    meta : {
      message: 'success'
    },
    status:true,
    data: data.list
  })
})
module.exports = router;

浏览器访问可在控制台打出返回数据:
img_c27625c2b5739b745510ca5c729160cb.jpe

3.4 在mockserver项目目录下打开命令行工具,输入npm start,待服务启动后,打开前端页面即可看到服务器返回的模拟数据。

3.5 开启其他人员的访问能力,其实就是在本地搭建一个服务器。

实现方式1——通过express工程来实现node服务器

将前端代码拷贝至express项目目录中public文件夹(本例中为/mockserver/public),打开命令行工具输入ipconfig查询本机IP,将127.0.0.1替换为本机IP,然后在浏览器直接访问即可打开网页。

实现方式2——传统Apache服务器

为方便管理,直接使用开源XAMPP集成环境,安装完成后一键开启apache服务器,并将前端代码拷贝至安装目录中htdoc文件夹中的子文件夹中,然后以方式1中类似的方式在浏览器中访问即可,由于服务端代码取消了跨域限制,故即使端口号不同,apache服务器中的网站仍然可以访问node服务器中的接口并拿到数据。

3.6 最后,项目是大家一起做的,不是你撇清责任就完事了的,为你所做的一切提供一个可参考访问的excel文档并把它发给与你合作开发的后端是有礼貌的做法。

相关文章
|
1天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第7天】本文将带你进入Node.js的世界,从基本概念、环境搭建到实际案例,逐步深入探索Node.js在后端开发中的应用。我们将通过一个简单的在线聊天室项目,学习如何利用Node.js进行网络编程和数据处理,让你对Node.js有更全面的认识。
|
4天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第4天】本文将带你走进Node.js的世界,从基础的搭建到高级的应用,一步步揭示Node.js的强大与便捷。我们将通过实际的代码示例,让你在轻松的氛围中学习并掌握Node.js,开启你的后端开发之旅。
|
1天前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
2天前
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
14 2
|
5天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第3天】在数字化时代的浪潮中,后端开发作为技术架构的核心,承载着数据处理和业务逻辑的重任。Node.js以其非阻塞I/O、事件驱动的特性,在众多后端技术中脱颖而出,成为高效、轻量级后端解决方案的代名词。本文将带领读者深入理解Node.js的精髓,从基础概念到实战应用,逐步揭示如何利用Node.js构建高性能的后端服务。通过浅显易懂的语言和实际案例分析,我们将探索Node.js在现代后端开发中的应用及其带来的变革。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往Node.js世界的大门,让你领略其背后的哲学和技术之美。
|
3天前
|
存储 JavaScript 前端开发
深入浅出Node.js: 从零到一搭建后端服务
【10月更文挑战第5天】在数字化时代的浪潮中,掌握一门后端技术变得尤为重要。Node.js,作为一种轻量、高效的平台,让JavaScript开发者能够轻松跨越前后端的界限。本文将带领初学者一步步了解Node.js的核心概念,并通过实践指导如何搭建一个简单的后端服务。我们将探索异步编程的魅力,模块化的便利,以及中间件的强大功能。准备好了吗?让我们开始Node.js的奇妙之旅!
|
4天前
|
Web App开发 JSON JavaScript
深入浅出:Node.js后端开发入门与实践
【10月更文挑战第4天】在这个数字信息爆炸的时代,了解如何构建一个高效、稳定的后端系统对于开发者来说至关重要。本文将引导你步入Node.js的世界,通过浅显易懂的语言和逐步深入的内容组织,让你不仅理解Node.js的基本概念,还能掌握如何使用它来构建一个简单的后端服务。从安装Node.js到实现一个“Hello World”程序,再到处理HTTP请求,文章将带你一步步走进Node.js的大门。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往后端开发新世界的大门。
|
6天前
|
JavaScript 前端开发 开发者
使用 Vue.js 和 Vuex 构建响应式前端应用
【10月更文挑战第2天】使用 Vue.js 和 Vuex 构建响应式前端应用
13 0
|
6天前
|
Web App开发 缓存 前端开发
前端RAG:使用Transformers.js手搓纯网页版RAG(二)- 基于qwen1.5-0.5B
本文继续探讨了RAG的后半部分,通过在浏览器中运行qwen1.5-0.5B模型实现了增强搜索全流程。然而,由于浏览器与模型性能限制,该方案更适合研究、离线及高隐私场景。文章提供了完整的前端代码,让读者能够动手尝试。此外,详细介绍了代码框架、知识库准备、模型初始化及问答实现等步骤,并展示了实际运行效果。受限于当前技术,除非在离线或高隐私环境下,网页大模型的应用仍需进一步优化。
19 0
|
8天前
|
JavaScript 前端开发 NoSQL
深入浅出Node.js后端开发
本文将引导你了解Node.js的基础知识,包括安装、运行环境搭建以及简单的代码示例。通过阅读本文,你将学会如何利用Node.js进行后端开发,并理解异步编程和事件驱动模型的核心概念。文章还将介绍一些实用的库和框架,帮助你快速开始Node.js项目。
30 4