Webix实践(一)

一:webix是什么?

Webix是一款白俄罗斯的原生组件库,支持TS、requireJS、React、Vue、Angular

二:为什么使用webix?

除了收费,以及新手会花一定时间学习熟悉之外,其所带来的优势有:

1、类原生写法,配置式,前后端能一起写
2、低css,自带ui能满足业务的情况下,能减少很多工作量
3、微前端简单且灵活,还能包裹react、vue等其他框架项目打包

三:构架webix项目

创建vite+react模板
1、$ yarn create vite 选择react-ts,之后正常创建项目
2、依赖注入
js 复制代码
"devDependencies": {
    "@xbs/jet-helpers": "1.1.2",
    "eslint": "^8.41.0",
    "vite": "^4.3.8"
  },
  "dependencies": {
    "@types/node": "^20.3.2",
    "@vitest/ui": "^0.32.2",
    "@xbs/webix-pro": "^10.1.2",
    "jet-hotkey": "^1.0.0",
    "jet-restate": "^1.0.1",
    "typescript": "^5.0.4",
    "vite-plugin-dts": "^3.0.0-beta.3",
    "vitest": "^0.32.2",
    "webix-jet": "^3.0.1"
  },

核心库:webix-jet(开源)、@xbs/webix-pro(收费)。 可以试用,代码里面的使用

3、hello world

index.html内部

js 复制代码
<link rel="stylesheet" type="text/css" href="//cdn.webix.com/edge/webix.css">
<link rel="stylesheet" href="./src/assets/statics/mdi/font/css/materialdesignicons.min.css" type="text/css" charset="utf-8" />

<script type="text/javascript" src="http://192.168.0.187:82/static/js/webix.js"></script>
<script type="text/javascript" src="http://192.168.0.187:82/static/js/jet.umd.js" ></script>

<script type="module" src="/src/MyJetApp.ts"></script>

webix.ready(function(){
    webix.ui({template:"hello world"})    
})

分别是框架css,图标css,框架js,架构的js,项目内部业务js,和UI的暴露方法。

此时在进入MyJetApp业务代码之外,我们就渲染出了组件,要编写模块化的复杂组件,则在入口文件内书写

4、模块化组件
  1. webix-jet
js 复制代码
import { JetApp, EmptyRouter } from "webix-jet";
import ProcessApp from './Process/ProcessApp'
export default class MyApp extends JetApp{
	constructor(config:any){
		const defaults = {
			router 	: EmptyRouter,
			debug 	: true,
			start 	: "process",
			views:{
				"process": ProcessApp,
			}
		};
		super({ ...defaults, ...config });
	}
}
webix.protoUI({ name: "myProcessApp", app: MyApp }, webix.ui.jetapp);

创建jetApp,并暴露出来(webix.protoU),将打包的入口定到该页面可打包出去

js 复制代码
 build: {
    outDir: "dist",
    lib: {
      entry: resolve(__dirname, "./src/MyJetApp.ts"),

这样在其他项目或者这个页面,加载了打包的js,都可以webix.ui({template:"myProcessApp"})来使用加载。

接下来就是进入jetView页面,在里面写ui

js 复制代码
    return {
            rows: [
                {
                    cols: [
                      {
                        view: "form",
                        scroll: false,
                        localId: "myForm",
                        elements: [
                          {
                            type: "wide",
                            css: {
                              background: "white !important",
                            },
                            cols: [
                              {
                                view: "text",
                                name: "jh",
                                label: "井号:",
                                width: 250,
                              },
                              {
                                view: "button",
                                value: "查询",
                                width: 100,
                                click: () => {
                                  this.onSearch();
                                },
                                css: "webix_primary",
                              },
                              {},
                            ],
                          },
                        ],
                      },
                    ],
                },
                {
                    $subview: new BaseTableView(self.app, {...configs}),
                    name: 'my_table'
                }
            ],
        
         
        }

页面风格:

这是config内部return的对象,就是需要展示的UI,subview是子组件,可以进行嵌套,更详细的参考api文档学习

总结

以上就是webix从无到有创建项目使用的过程,涉及到的api可以在开始的地址里面去学习,可以作为框架预研的初步了解。

相关推荐
花花鱼6 分钟前
vue3 基于element-plus进行的一个可拖动改变导航与内容区域大小的简单方法
前端·javascript·elementui
k09339 分钟前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
EricWang135831 分钟前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
September_ning31 分钟前
React.lazy() 懒加载
前端·react.js·前端框架
web行路人41 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
超雄代码狂1 小时前
ajax关于axios库的运用小案例
前端·javascript·ajax
长弓三石1 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
小马哥编程1 小时前
【前端基础】CSS基础
前端·css
嚣张农民2 小时前
推荐3个实用的760°全景框架
前端·vue.js·程序员
周亚鑫2 小时前
vue3 pdf base64转成文件流打开
前端·javascript·pdf