有 网友 提到 :

“复杂的页面,一个页面加载的模块多,各种异步请求,页面渲染,jquery链式编程操作dom数过于频繁。现在的前台越来越复杂,逻辑臃肿。”

哎, 所以 我说, 要改成用 同步调用 。

什么是 同步调用, 就是 后端代码 里 调用 数据库 那样 。

如若不然, 还沉浸 在 “回调” 带来的 光辉的技术感 里的 话,  回调地狱  无法解决 。

现在 大家 都 以 “回调” 为荣,  以 “异步” 为荣, 以此 为 潮流, 以此 为 高效, 以此 为 进步, 以此 为 先进 。

这是 错误 的 。

前端 Js 里采用 AJAX 异步回调 的 方式 是 被迫 的, 事实上 当年 前端 Js 开发人员 很羡慕 其它语言 比如 Java C# 这样 可以 同步调用数据库 。

而 Js 没有这个能力 。

这大概是因为 Javascript 是 单线程 模型 吧 !  不能 Sleep() , 也不能 Wait()  。

我强调一点, 程序员 要对 程序 有 控制感 。

太多的 回调 把 程序 切割 的 支离破碎, 这样的 代码 是 病态 的 代码 。

当然大家可能会说  “异步回调 提升了效率  ……    某某框架 是 回调 的 架构, 所以 速度 如何如何 的快, 可以支持 多大多大 的 并发量  ……”,

对此 我不想多说, 我今天在 QQ 群 里说了很多 。

总之, 且 不论 “异步回调” 是否 真的 提升了 效率,  我想引用 大家经常 引用的 一句话   “代码是写给人看的”,

还有 一句话 是   “能用硬件解决的事不要让软件来解决”,

还有一句话 是   “硬件是最廉价的”,

说了 那么多效率,  有没考虑一下   “代码是写给人看的”    好伐   ?!

而且 异步回调 是否真的能带来 效率 提升 这个 还 值得怀疑,   我只是觉得, 把 架构 搞得 很复杂, 效率 肯定 好不到哪去 。

关于 异步回调 是否能 提升性能, 可以参考 《后线程时代 的 应用程序 架构》  https://www.cnblogs.com/KSongKing/p/10228842.html

不过 Js 现在 学 C# , 搞了个 await 关键字, 看起来能实现一个  “伪同步”,  至少 代码 不再是 异步回调, 是 顺序 的 。

还行,  这问题就先过了吧 。

接下来要说 第二个问题,  就是 页面 模型, 或者说 页面开发架构, 或者说 页面控件模型, 或者说 页面控件架构 。

业界 已经被 各种 “前端框架” 荼毒多年 。

前端界 已经被 各种 “前端框架” 荼毒多年 。

这是 现实,  也是 事实 。

可以看看我写的    jlet    https://www.cnblogs.com/KSongKing/p/9455238.html

jlet 是一个 简单 的 前端 Js 库,   重要的是 提出了 “库” 的 思想,  为 前端架构 指出了一个 方向 。

我不赞同 MVVM ,   MVVM  同样是一种 过度封装 的 思想,

我认为 好的做法是,  提供 一个一个  封装  好的 控件,  用 代码 调用  控件 的 属性 和 方法 。

不要 用 各种 “UI 框架” 来 绑架 开发方式,

也 不要 用  MVVM  等方式   把  控制逻辑  绑架 到 控件 里,

程序 就是 程序,

程序员 应该 对 程序 有 控制感,

过度 的 控制反转 会 使 程序员 极大 的 丧失 对 程序 的 控制感 。

少搞框架,  少搞声明式 。

jQuery 和 一些 前端框架  会用 “声明式” 的 方式 来 做 用户输入校验,  比如 通过 Html 标签 或者 控件 的 属性 来 声明 这个 控件(如文本框) 要 作 什么样的 输入校验(如 数字格式、日期格式) , 然后 在 点击按钮 或者 Form 提交 的 时候, 由 框架 统一校验 。

这种方式, 看起来 高端, 维护的时候 蛋疼 。

好的方式 应该是, 提供一些 Util 方法, 如 Util.CheckNumber(),   Util.CheckDate()  ,

然后 在 按钮点击 事件函数 里 直接写  if  代码判断,  如:

if (  !  Util.CheckNumber(  …… ))

{

Util.Alert("xx 应 输入 数字 。");

return;
}

这种做法,  看起来代码多了,  但 简单直接, 清楚明了,  尤其 有利于 维护 。

我在 《Web-Business-Application-Solution》 https://www.cnblogs.com/KSongKing/p/9455047.html    中 提出过:

少搞一点 封装, 少搞一点 控制反转(Ioc), 少搞一点 AOP, 少搞一些 “声明式”。

不要隐藏太多代码,让 代码 回归 代码。

是 找回 80 年代 写 Basic 的 那种感觉 的 时候了。 ^ ^

我对 前端 Js 开发方式 架构方向 的 一些看法的更多相关文章

  1. 前端Js框架汇总

    概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...

  2. 闲聊——浅谈前端js模块化演变

    function时代 前端这几年发展太快了,我学习的速度都跟不上演变的速度了(门派太多了,后台都是大牛公司支撑类似于facebook的react.google的angular,angular的1.0还 ...

  3. Web前端发展前景及就业方向

    Web前端发展前景及就业方向 HTML5技术已经日趋成熟 Html5是移动互联网前端的主流开发语言,目前还没有一个前端的开发语言能取代 html5的位置,所以说,无论你是做手机网站还是在手机app应用 ...

  4. 2015 前端[JS]工程师必知必会

    2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...

  5. Parallax.js – 自适应智能设备方向的视差效果插件

    Parallax.js 是一个简单的,轻量级的的视差引擎,能够对智能设备的方向作出反应.在没有没有陀螺仪或运动检测硬件可用的时候,使用光标的位置来代替.有很多的行为,你就可以设置为任何给定的视差实例. ...

  6. 前端Js框架 UI框架汇总 特性 适用范围 选择

    身为一个资深后端工程师,面对层出不穷的前端框架,总让人眼花缭乱,做一个综合解析贴,从全局着眼,让我们明白各种前端框架的应用范围,为如何选择前端框架,从不同的维度提供一些线索,做为一个长期优化贴,欢迎指 ...

  7. 【你的职业规划】web前端的职业发展方向及学习攻略【转载】

    web前端的职业发展方向有哪些?本文献给正在迷茫中,准备入坑web前端的初学者以及知海匠库web前端培训班的准前端工程师们:   一.职业方向定位 首先,只有确定好自己的职业方向,才能做好职业规划.在 ...

  8. 如何通过 Vue+Webpack 来做通用的前端组件化架构设计

    目录:   1. 架构选型     2. 架构目录介绍     3. 架构说明     4. 招聘消息 目前如果要说比较流行的前端架构哪家强,屈指可数:reactjs.angularjs.emberj ...

  9. 前端Js框架汇总【转】

    概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...

随机推荐

  1. idea 一些插件配置

    接触maven快2年了吧,对maven还是一知半解其实.得到了一些教训,就是少转牛角尖,多把握实际需要的东西,一口一口吃饭. 插件化很常见了.这里记录idea使用的jetty插件 和tomcat插件和 ...

  2. 人生苦短,我用python,为什么选择python,python简介

    认识 Python 人生苦短,我用 Python —— Life is short, you need Python  目标 Python 的起源 为什么要用 Python? Python 的特点 ...

  3. Ionic2开发环境搭建、项目创建调试与Android应用的打包、优化

    Ionic2开发环境搭建.项目创建调试与Android应用的打包.优化. windows下ionic2开发环境配置步骤如下: 下载node.js环境,稳定版本:v6.9.5 下载android stu ...

  4. java基础学习之final关键字

    final可以修饰类.方法.变量,一旦使用了final则将不能改变被修饰的对象的引用; 被final修饰的类不可以被继承 被final修饰的方法不可以被覆盖 被final修饰的变量一般为常量,只允许对 ...

  5. 使用ext httpProxy代理获取列表但列表展示不全的问题解决

    今天项目中遇到一个奇葩的事情,使用ext的jsonstore通过httpproxy代理想要获取一个列表,页面显示是有五条数据的但是却只展示了2条,于是各种排查,后台确定无误后开始检查前台,发现浏览器中 ...

  6. day 28 hasattr getattr serattr delattr 和带__内置__ 类的内置方法

    反射 后边有关字符串的# class Management:# role = '管理员'# def __init__(self,name,sex,phone,mail):# self.name = n ...

  7. 框架:Spring IoC

    Spring篇 第二章.Spring IoC简介 一.基本概念 控制反转是一个比较抽象的概念,是Spring框架的核心,用来消减计算机程序的耦合问题. 依赖注入是IoC的另外一种说法,只是从不同的角度 ...

  8. vue 首屏渲染优化 -- 这个不错

    这篇文章分享了从遇到前端业务性能问题,到分析.解决并且梳理出通用的Vue 2.x 组件级懒加载解决方案(Vue Lazy Component )的过程. 初始加载资源过多 问题起源于我们的一个页面,下 ...

  9. python day02 作业答案

    1. (1).false   (2).false 2. (1).8  (2).4 3. (1).6  (2).3  (3).false (4).3   (5).true   (6).true  (7) ...

  10. 使用json通过telegraf生成metrics(摘自telegraf github文档)

    JSON: The JSON data format flattens JSON into metric fields. NOTE: Only numerical values are convert ...