如何像后端一样写前端代码?

声明:笔者会以一个后端开发人员(类 C 语言)的身份来做前端的开发,但是需要一些前端基础知识,比如:HTML 标记、DOM 文档等。

除此之外需要安装有 Node.js 4.0+ 版本,最好在 GitHub 上 Clone 本文源码。

传统的 Web 开发中,写 js 代码很少考虑面向对象、模块化,因为没有这方面的要求,也没必要。传统的 Web 开发,前端仅仅负责数据的展示,很少或根本不负责动态交互。

随着页面越加复杂,页面的交互越来越多,势必增加 js 的权重,不考虑面向对象、没有模块化的 js 很可能会导致代码结构的崩塌。另一方面,后端语言(比如 C#、Java 等)却可以很轻松的完成复杂逻辑的编写工作。

这使得人们开始重新思考 js 的定位。2013 年横空出世的 React 框架,加上定稿的 ES6 语法,终于赋予了前端模块化定制的能力。

一个简单的例子

import React, {Component} from 'react';
export default class HelloMessage extends Component {
  constructor(props, context) {
    super(props, context);
  }
  render() {
    return (
      <div>Hello {this.props.name}!</div>
    );
  }
}

以上代码就是一个通常的理解的类,按照规范单独成一个文件,有自己的构造函数和render 方法。

  1. 构造函数在 new 的时候调用。
  2. render 方法根据名字判断是渲染成 HTML 文档。
  3. 引入了一个已有的模块 react,从之继承。

以上,就是作为后端开发,咱一眼能看出来的东西。事实呢,也确实如此!

  1. 构造函数不用讲了,super 关键字指向了父类的相关信息,这个必须在构造函数第一行。
  2. render 方法会把 return 返回的 HTML 元素,在适当的时机,添加到 DOM 文档中去。
  3. 至于 import 语句,是 ES6 语法固定的写法,就好比 C# 的 using 语句。
  4. export default 可以类比成 C# 里面的 public 关键字,这样才能在别的类中调用;可以省略,表示只在当前文件可见,相当于添加了 private 关键字。

连接 HelloMessage 模块

就好像 C# 代码需要一个入口点函数一样,模块化的 js 需要一个入口文件:

import React from 'react';
import ReactDOM from 'react-dom';
import HelloMessage from './HelloMessage.jsx';
ReactDOM.render(<HelloMessage name="张三" />, document.getElementById('container'));

解释下这段代码:

  1. 导入 React 框架的渲染类、HelloMessage 模块类。
  2. 将 HelloMessage 模块类渲染到 id='container' 元素上

编译 js 文件

是的,你没看错,即使是 js 仍然需要编译才能运行。编译这块我不多解释了,这次的任务主要是带领大家得到一个以后端形式编写的页面。

在控制台中键入 npm start 后u看到如下图所示的结果后即表示构建完成:

此时,双击根目录下的 index.html 就能看到最终结果了:

引入到 .html 文件并运行

在 .html 文件中引入编译后的 js 文件,点击在浏览器中打开。

<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="container"></div>
  <script src="dist/core.js" charset="utf-8"></script>
  <script src="dist/index.js" charset="utf-8"></script>
</body>
</html>

一些必要的说明

DEMO 运行起来了,我们能看到的只是出现了一行文字而已,距离理想中高大上的网页,还有十万八千里,但是我们已经迈出了第一步,剩下的就是把这段路走完而已。

  1. 前端代码模块化后,开发过程中是需要拆分文件的,规范的做法是一个模块一个文件,类比到 C# 代码就是一个 class 一个 cs 文件。
  2. 拆分各个模块后,模块间的相互引用,需要使用 export default 和 import 语法来导出和导入,类比到 C# 代码就是 public 关键字和文件头的 using 语句。
  3. 入口文件是必须的。就好像 C# 控制台程序,从 Program.Main 方法启动。因为 js 是按照代码从上往下执行的,所以 js 入口文件需要先 import 需要的模块,调用ReactDOM.render 方法将目标模块渲染到目标元素上。 
    • 目标模块需要传递的参数,按照 attribute 的形式添加到元素中。
    • 注意引入的模块首字母必须是大写的,这是 React 的约定,防止和原生的 HTML 组件名称冲突,比如:div 就是 HTML 元素,HelloMessage 是咱写的组件。
  4. 在 .html 文件中以 script 引入编译后的文件,这里是引入了两个文件: 
    • core.js 表示公共模块,好比 C# 运行中需要的 System.dll 文件。
    • index.js 表示咱写的 js 代码。

OneAPM Mobile Insight 以真实用户体验为度量标准进行 Crash 分析,监控网络请求及网络错误,提升用户留存。访问 OneAPM 官方网站感受更多应用性能优化体验,想阅读更多技术文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

时间: 2024-08-30 01:23:44

如何像后端一样写前端代码?的相关文章

javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)_javascript技巧

前言: 密码强度是一个很普遍的功能,比较简单,主要是怎么制定这个强度规则.现在需要升级密码强度的验证,以前的验证比较简单,现在已经不能满足需求了,现在需要可灵活变化并有多级别可配置选择的一个密码强度验证,所以就设计了下面这个东东.在设计前也参考了下比较成熟的强度规则,大同小异,不外乎都采取了打分的机制来控制密码强度规则,这样可配置性高,灵活.本来想直接拿来用的,但是发现都比较旧,有些不太适宜公司开发的需求,可能这个东西比较简单吧,所以也没什么人去更新和写新的代码,所以还是自己动手设计了规则和写了

《Web前端开发最佳实践》——2.6 前端代码基本命名规范和格式规范

2.6 前端代码基本命名规范和格式规范 命名规范和格式规范是代码规范中最基本的规范,任何代码的混乱都是从命名和格式的混乱开始的,而意义明确的命名和规整的代码格式则提高了代码的可读性与可维护性,给代码的阅读者和维护者留下了良好的第一印象.命名规范和格式规范没有一个统一的标准,不同的人可能有不同的认识,但是在同一个项目中,必须严格遵守统一的命名和格式规范.以下推荐的规范是在实际项目中认同度较高的代码规范,供读者参考.2.6.1 HTML命名规范及格式规范 HTML代码所有的标签名和属性应该都为小写,

前端代码异常日志收集与监控

在复杂的网络环境和浏览器环境下,自测.QA测试以及 Code Review 都是不够的,如果对页面稳定性和准确性要求较高,就必须有一套完善的代码异常监控体系,本文从前端代码异常监控的方法和问题着手,尽量全面地阐述错误日志 收集各个阶段中可能遇到的阻碍和处理方案. 收集日志的方法 平时收集日志的手段,可以归类为两个方面,一个是逻辑中的错误判断,为主动判断:一个是利用语言给我们提供的捷径,暴力式获取错误信息,如 try..catch 和 window.onerror. 1. 主动判断 我们在一些运算

听说2017你想写前端?

不好意思,没有像其他公众号一样赶着发文章,每年到这个时候总有一大波什么今年前端预测,技术框架预测什么的.我这次写这篇文针对的对象,是想在今年踏入前端这行的人们,不管你现在是徘徊在门口,还是已经半只脚踏入这片未知领域,都可以参考一下先行者的经验. 先来个大概预览: 项目工程化 发展方向 职业环境 总结要掌握的框架/技能 小结放在前: 2017的前端与其说更残酷,不如说更规范化,前两年各种培训了几个月就出来随口开价上万,几万的新手将被市场淘汰. 前端开发工具/编译工具 逐渐成型,虽然比不上objec

《Web前端开发最佳实践》——2.2 前端代码重构

2.2 前端代码重构 代码重构是业内经常讨论的一个热门话题.重构指的是在不改变代码外部行为的情况下进行源代码修改,重构之前需要考虑的是重构后如何才能保证外部行为不改变.对于后端代码来说,可以通过大量的自动化测试来确保重构后的代码逻辑,可对于普遍缺乏自动化测试的前端代码来说,重构之前一定要考虑再三才能下手.我曾经有一次不算太成功的前端重构经历,所幸的是没有导致太大的问题,但教训是惨痛的.此次重构的项目本身没有足够的自动化测试,尤其是针对前端的自动化测试,其实在重构之前也预想到了重构的风险.先来介绍

别再像2009年那样写PHP代码了

离开在Facebook担任工程师的仅仅2个月时间,我就很困惑,外面的世界看上去仍然像是在2009年的时候那样写 PHP. 貌似人们从来没听过 Hack. HHVM. XHP 等等,人们仍旧在代码里大量使用 require() 和 include() 语句.简直了. 我仍然认为 PHP 是一门写前端应用的优秀语言(业务逻辑和 API 层),但只有当你应用了以下它的现代优势时,这一说法才成立: 1. Hack 打出你的变量: 说实话,PHP 最大的问题是它缺乏强类型. 变量可以是任何类型,很多时候这

《Web前端开发最佳实践》——1.3 规范的Web前端代码:更易维护、更高性能和更安全

1.3 规范的Web前端代码:更易维护.更高性能和更安全 规范的代码,这是所有软件开发中对代码的基本要求,前端开发也是一样的,要求编写规范的HTML.CSS和JavaScript代码. 什么样的前端代码才能称得上规范的代码?探讨这个问题之前,首先需要强调的是规范不是标准,不是放之四海而皆准的,不同的项目中的代码规范是有可能有差异的,比如命名,有些项目规定HTML标签的id必须要以控件的缩写名作为前缀,如按钮的id名以"btn"作为前缀,有些只是规定命名有意义就可以.再比如有些项目规定J

页面上有个textarea,在里面写java代码,然后如何动态编译执行这段java代码??

问题描述 页面上有个textarea,在里面写java代码,然后如何动态编译执行这段java代码?? 页面上有个textarea,在里面写java代码,然后如何动态编译执行这段java代码?? 解决方案 可以使用一些前端的模板引擎,java是编译的 解决方案二: ajax提交客户端输入的代码动态执行就行,看下面参考 ajax提交http://www.w3school.com.cn/jquery/ java中怎么执行字符串中的代码http://bbs.csdn.net/topics/3903563

JS传递对象数组为参数给后端,后端获取的实例代码_javascript技巧

前端JS代码: var conditons = []; var test1 = new Object(); test1.name="1"; test1.id="2"; var test2 = new Object(); test2.name="1"; test2.id="2"; conditons.push(test1); conditons.push(test2); $(function(){ $.ajax({ async: