基于Webpack, KnockoutJs,esyui,koeasyui实现类vue-cli生成的模板框架

   前后端分离的开发机制,基本上是开发现代业务系统的标配。可在国内某些特殊领域还是存在大量的以JQuery走天涯的现象,但其中也不泛有追求技术者,如不才的鄙人。不才的本人曾以JQuery走天涯;后又接受了Knockoutjs,被他MVVM思想所吸引;也学习和了解过vue,他确实很棒,很了不起,但他不兼容ie8-(基于他的几款UI框架对低本的IE支持都不友好)。所以我产生了Knokcoutjs + easyui + webpack = ?的想法。有了想法就要开撸,终于在今年5月份完成了koeasyui的alpha版本(博客地址:

     最初我一味的执着于用webpack进行jquery, knockoutjs, koeasyui的引用。但随后想想此架构其实只能局限于pc端的管理系统,也没办法做到服务端渲染和h5端通用。所以就直接用了这种粗鲁的方式。

二、组件开发规范如何定义和实现

     因为本人对vue较为喜欢,所以很想模仿其实现文件组件方案。可试来试去发现,做好一个单文件组件需要的东西太多,如:组件编译器、vscode扩展工具、atom扩展工具的支持等,所以我选择了放弃。但回头一起,webpack不是万能的嘛,肯定可以导入html,js文件,然后进行组装啊,果不其然。所以我们的组件模式如下:

复制代码
<div>    <span data-bind="text:text" ></span></div>
复制代码
  • index.ts:组件入口和出口文件
复制代码
import {ViewModel} from './viewModel';  //@ts-ignoreimport * as template from './default.html';  export function use(ko:KnockoutStatic){     ko.components.register('test',{         viewModel: ViewModel,         template: template     }); }
复制代码

其中在导入.html文件时,需要加上@ts-igonre,用于忽略ts lint的检测

  • viewModels.ts:组件模型文件
复制代码
export class ViewModel{     public text:KnockoutObservable<string>;     constructor(param, componentDef, $root){         let that = this;         this.text = ko.observable('ko easyui framework in webpack');         } }
复制代码

本模板框架全程使用typescript,所以js相关文件都是.ts结尾的。

三、easyui组件的引入

引入easyui非常方便,首先需要装koeasyui相关组件都注册到内存中,代码如下:

复制代码
//注册easyuiwindow.koeasyui.use(ko);
复制代码

然后在需要要位置进行组件引入,所以easyui组件被翻译为ko-组件名称,如:

复制代码
<div>    <span data-bind="text:text" ></span
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信