有 网友 提到 :

“复杂的页面,一个页面加载的模块多,各种异步请求,页面渲染,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. DevExpress v18.1新版亮点——Office File API篇

    用户界面套包DevExpress v18.1日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Office File API v18.1 的新功能,快来下载试 ...

  2. JAVA 中的MessageDigest类和Mac类的使用

    MessageDigest 消息摘要 例子: MD5加密: try{ MessageDigest md5 = MessageDigest.getInstance("MD5"); m ...

  3. Unity项目中的资源管理

    这是我在2017金山技术开放日分享的部分内容.从贴图资源格式配置的介绍开始,引申出资源配置工具,最后再谈谈一整套项目资源管理方案.在GitHub上可以获取到资源配置工具的代码,是基于下面理念的一份简单 ...

  4. Effective Java Chapter4 Classes and Interface

    MInimize the accessibility of classes and members 这个叫做所谓的 information hiding ,这么做在于让程序耦合度更低,增加程序的健壮性 ...

  5. Sample Credential Providers

        Windows Vista Sample Credential Providers Overview Contents Terms of Use Release Notes SampleCre ...

  6. ESP8266 问题

    根据SDK接口编写的程序在运行一段时间,大约15/18分钟左右,就会报错 [22:30:55.828] there is no poison after the block. Expected poi ...

  7. mysql基础查询语法

    一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count( ...

  8. 2017ICPC北京赛区网络赛 Visiting Peking University(简单思维)

    描述 Ming is going to travel for n days and the date of these days can be represented by n integers: 0 ...

  9. Java中的IO流大体介绍

    由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...

  10. JAVA基础部分复习(四、抽象类与接口)

    抽象类与接口的定义: package cn.review.day02; /** * 抽象类 * 定义: * 1.抽象类使用关键字abstract修饰 * 2.抽象方法必须定义在抽象类中,抽象方法没有方 ...