本系列博文从ShadowWidget作者的角度讲解框架的设计要点,既作为用户手册的补充并从更本质的角度帮助大家理解ShadowWidget为什么要这样设计,相关概念是如何提出来的,正确的使用姿势等。1、前言“非正经入门”是相对于“正经入门”而言的。ShadowWidget正确的入门方法是:按照ShadowWidget技术栈的依赖顺序,依次学习各个手册。例如,React位于底部。去它的官网找资料学习。React之上是shadow-widget和shadow-server。去github.com/rewgt找到这两个repository,clone到本地,按顺序学习每个repo附带的用户手册,然后上面有shadow-book,shadow-slide等repo。如果你使用它,学习相应的用户手册。“认真入门”的学习方式学院派、严谨、完整、系统,是大多数用户的首选。但毕竟有些老司机不正经,坐得笔直,做那么多前戏,会很不耐烦。嗯,这些博客就是为他们准备的。我尽量直击人心,讲要点。接触过ShadowWidget的童鞋一看就懂,讲解过程可能会漏掉,先见谅。不过没关系,正式学习还是要回到“认真入门”的路上。要求读者对React开发技术有深入的了解,否则,嗯,请回到“认真入门”的学习方式。这些博客也有利于技术回顾,让大家对ShadowWidget系统的精髓和原理有更深入的了解。2.快速入门建议1)先学会拼写文档,注册一个github账号,forkrewgt/blogs库为自己的名字,然后用这个库写自己的博客,看这个介绍。ShadowWidget的界面设计非常依赖两件事,一是使用markdown语法,二是所见即所得的UI可视化设计器。这两项也是写文档时随时用到的。例如,在编写演示影片时,影片页面编辑器是ShadowWidget视觉设计师。能拼写文章,相当于ShadowWidget开发入门的三分之一。2)系统学习《Shadow Widget 用户手册》包括理论篇、基础篇、进阶篇、API手册、可视化设计手册。大多数软件的用户手册仍然是最好的入门教材。虽然网上经常有人写《XX系统最佳入门》之类的教科书,但让人误以为是捷径。事实上,在大多数情况下,他们的学习速度不如阅读原始用户手册。ShadowWidget编程系统比较内向,入门时学习工作量比较大。上手后,ShadowWidget之上的很多组件(或库)都是规格相同的扩展插件,简单易学。另外,得益于视觉设计的特点,记忆负担轻。基本上,组件是通过拖入模板创建的,选择组件后配置其属性。遇到不清楚的API,查看在线帮助非常方便。3、React的三宗罪提前声明React是一个优秀的框架,我并不讨厌React。所提到的三宗罪是基于世俗的看法。人们经常将React、Angular和Vue放在一起比较。实际上,React只是一个虚拟DOM级别的库。在React上叠加了几个工具,比如使用不可变数据,形成FRP处理框架,叠加Routing机制等,之后React相当于Angular和Vue。将DOM库与其他库进行比较,显然React做得不好。但是现在的情况是如此,谁让React建立了编程模型呢?其实把三者并排比较的人心里也很清楚,他是在比较三个生态链,而不仅仅是三个工具。由于React建立了一种函数式的、单向数据驱动的、JSX和JS代码混合的编程模型,它有它的先进性,不可避免地会引入一些肮脏的因素,如下文“三宗罪”专栏所描述的是一个典型的负面因素,也是当前React生态未能有效解决的焦点问题。当然,shadow-widget诞生后,这些不良影响基本都被消除了。所以,React的三宗罪是“React+other”的三宗罪,而不是“React+shadow-widget”的三宗罪。3.1三宗罪之一:长工具链学习React,将面临超长工具链。有总结,别当坑就好)。关于超长工具链,可以参考我之前的博客。React工具链还在春秋战国时期。尚未找到最佳平衡点。BrendanEich当年创建javascript,只是为了给简单的网页添加一点简单的编程手段。现在的JS生态环境已经和早年相去甚远了。即使在五年前,网页编程还是很简单的,jQuery解决了大部分问题。其实这种简单的形式很符合网页的主流地位。大多数网页只显示信息,少量的编程就足够了。现在的问题是,轻量级编程和重型编程之间没有界限。有时一开始是轻的,在维护和增加功能的过程中逐渐变重。有的时候自己负责的部分是轻量级的,但是和别人有联系。其他人是重量级开发人员,必须被吸收到重量级应用程序中。我的意思是一个好的前端框架应该同时适应轻量级和重量级开发,并且两者之间的过渡是平滑的。在初始阶段,无论系统多么复杂,都应该是轻量级的,叠加的功能应该只是增加容量,而不是重建架构。目前主流的“React+redux+react-router”的使用方式,加上不能省略的Babel编译工具,从一开始就是重量级开发。所以,现在很多人面对轻量级的web开发,宁愿不使用任何框架,而使用老掉牙的jQuery。ShadowWidget建立插件框架,“开发新的组件并封装成模板”是一个工作,“用现成的组件组装APP”是另一个工作,两个工作是完全分离的。对于后者,可以避免Babel翻译,可以使用ES5语法进行开发。另外,ShadowWidget内置了相当于reflux/redux的单向数据流机制,内置了相当于react-router的实现。不可变数据和ajax调用等其他功能具有内置支持。简而言之,“React+shadow-widget”是一个完整的前端框架,相当于Angular和Vue。在ShadowWidget之上扩展的PINPBlog是写文章和编程的结合,践行“写作就是编程”的理念,从轻量级开发过渡到重量级开发是一个自然的过程。3.2三宗罪之二:JSX粘贴JSX看起来像html,可以直接描述界面设计。我们以React官网的一段代码为例:functiongetGreeting(user){if(user){return
