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

一、如何解决对jquery,easyui的依赖

解决这类问题,我采用了较为粗鲁的一种做,就是把这类依赖包直接入到static文件夹中,然后用模块文件进行依赖。在编译的时候,将static文件夹进行复制。结果如下图所示:

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

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

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

  • default.html:默认的视图文件
<div>
<span data-bind="text:text" ></span>
</div>
  • index.ts:组件入口和出口文件
import {ViewModel} from './viewModel';

//@ts-ignore
import * 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相关组件都注册到内存中,代码如下:

//注册easyui
window.koeasyui.use(ko);

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

<div>
<span data-bind="text:text" ></span><br />
<ko-textbox params="options:{value:text, width: 400}" ></ko-textbox>
</div>

显示截图如下:

四、总结

您可以在gitee上获取本模板框架的源码,然后直接npm install, 再npm run dev运行开模式,用npm run build进行发布和打包。本模板框架现阶段还很基础,如有不足可留言 。计划下阶段实现:1. Mock的引入;2. 代理的引用;3. 引用路由实现SPA开发模板。

基于Webpack, KnockoutJs,esyui,koeasyui实现类vue-cli生成的模板框架的更多相关文章

  1. 基于Vue cli生成的Vue项目的webpack4升级

    前面的话 本文将详细介绍从webpack3到webpack4的升级过程 概述 相比于webpack3,webpack4可以零配置运行,打包速度比之前提高了90%,可以直接到ES6的代码进行无用代码剔除 ...

  2. Vue CLI 是如何实现的 -- 终端命令行工具篇

    Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供了终端命令行工具.零配置脚手架.插件体系.图形化管理界面等.本文暂且只分析项目初始化部分,也就是终端命令行工具的实现. 0. 用法 ...

  3. Vue Cli 中使用 Karma / Chrome 执行样式相关单元测试

    在 GearCase 开源项目 中,我使用了 Vue Cli 的默认测试框架.因此和样式相关的东西,都无法进行测试.因为它并不类似于无头浏览器,而是存在于虚拟内存之中. 现状 在如下 button.s ...

  4. 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何

    基于 Vue.js 之 iView UI 框架非工程化实践记要   像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...

  5. 基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    基于 Webpack & Vue & Vue-Router 的 SPA 初体验 本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com ...

  6. Vue.js中组件传参的方法 - 基于webpack模板

    在Vuejs中, 组件之间的传参是今天第一次接触, 之前写的组件互相之间都是独立的, 弗敢专也, 必以分人 环境: node.js npm vue-cli 以上安装请自行百度 一.项目创建 $ vue ...

  7. 基于 Webpack 4 搭建 Vue 开发环境

    自从工作之后,就已经很久没有写过博客了.时间被分割得比较碎,积累了一段时间的学习成果,才写下了这篇博客. 之前有写过 Webpack4 的文章,但是都比较偏入门,唯一的一篇实战篇 -- 基于Webpa ...

  8. 基于webpack的Vue.js开发环境快速搭建

    1. 安装node node下载地址 2. 安装淘宝 NPM npm 是node.js 的包管理工具. 镜像命令地址 #命令行: npm install -g cnpm 3. 安装vue # 全局安装 ...

  9. 基于webpack的vue项目路径别名

    在vue的项目里,我们可以使用../这样的相对路径的方式引用不同目录的组件: import userinfo from '../../../components/userinfo.vue'; 使用.. ...

随机推荐

  1. Node六-模块化

    Node实现CommonJS规范 -因此node可以使用模块化的方式组织代码结构 简单命令行加减运算 -代码 命令行执行 V8对es6的支持 -直接支持:const.模版字符串等. -严格模式支持:l ...

  2. Effective C++ 读书笔记(39-45)

    条款三十九:明智而审慎的使用private继承 1.C++裁定凡是独立(非附属)对象都必须有非零大小. class Empty{};//没有数据,所以其对象应该不使用任何内存 class HoldAn ...

  3. django-团队简介的网页

    团队简介的网页,是使用Django完成的 关于Django的教程网址:http://www.runoob.com/django/django-tutorial.html 小组作业成果如下:

  4. Maven安装和使用

    一.安   装 1.解压好后,添加系统环境变量 变量名:MAVEN_HOME 属性值:D:\apache-maven-3.3.3  //也就是解压的路径 path中添加:%MAVEN_HOME%\bi ...

  5. 0516js综合练习

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...

  6. Java基础系列--桶排序

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/9045967.html 1.算法简介 桶排序可以算是最简单快速的排序算法了,只是限定条件要多 ...

  7. element-ui bug及解决方案

    1.element-ui 使用MessageBox后弹窗显示异常 解决方案:去掉Vue.use(MessageBox); 2.element-ui 分页切换后若改变总数会导致请求两次 解决方案:< ...

  8. C++的反思[转]

    最近两年 C++又有很多人出来追捧,并且追捧者充满了各种优越感,似乎不写 C++你就一辈子是低端程序员了,面对这种现象,要不要出来适时的黑一下 C++呢?呵呵呵. 咱们要有点娱乐精神,关于 C++的笑 ...

  9. 开启irqbalance提升服务器性能

    操作系统 性能调休   公司有次压测存在一个问题:CPU资源压不上去,一直在40%已达到了性能瓶颈,后定位到原因,所在的服务器在压测过程中产生的中断都落在CPU0上处理,这种中断并没有均衡到各个CPU ...

  10. Linux kernel的中断子系统之(四):High level irq event handler

    返回目录:<ARM-Linux中断系统>. 总结:从架构相关的汇编处理跳转到Machine/控制器相关的handle_arch_irq,generic_handle_irq作为High l ...