# 前端开发
系统使用了基础前端技术混合开发,页面可以使用纯HTML、jQuery、VUE 等不同的技术快速开发。
# 前端开发实例
# 使用纯HTML静态页面开发
直接在 blade 页面中编写HTML代码即可,如下所示
@extends('modstart::layout.frame')
@section('pageTitle'){{'页面标题'}}@endsection
@section('body')
<div>
页面内容
</div>
@endsection
2
3
4
5
6
7
# 使用Vue非编译模式
在 blade 页面中编写 HTML 代码,然后使用 Vue 进行数据绑定,如下所示
@extends('modstart::layout.frame')
@section('pageTitle'){{'Vue非编译模式'}}@endsection
@section('bodyAppend')
@parent
<script src="@asset('asset/vendor/vue.js')"></script>
<script src="@asset('asset/vendor/element-ui/index.js')"></script>
<script>
$(function () {
new Vue({
el: '#app',
data() {
return {
count: 0
}
},
methods: {
doTest() {
this.count ++;
}
}
});
});
</script>
@endsection
@section('body')
<div id="app" v-cloak>
<el-button @click="doTest">点击测试</el-button>
<div>点击次数:{{count}}</div>
</div>
@endsection
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 使用Vue编译模式
在 blade 页面中编写HTML框架代码,使用Vue组件的方式完成页面开发。
blade 文件:module/Xxx/View/test.blade.php
@extends('modstart::layout.frame')
@section('pageTitle'){{'Vue编译模式'}}@endsection
@section('bodyAppend')
@parent
<script src="@asset('asset/vendor/vue.js')"></script>
<script src="@asset('asset/vendor/element-ui/index.js')"></script>
<script src="@asset('vendor/Xxx/entry/test.js')"></script>
@endsection
@section('body')
<div id="app"></div>
@endsection
2
3
4
5
6
7
8
9
10
11
vue 入口文件 module/Xxx/resources/asset/src/entry/test.js
import {VueManager} from "@ModStartAsset/lib/vue-manager";
VueManager.QuickMount('#app', '<test />', require('./../pages/Test.vue').default)
2
vue 页面 module/Xxx/resources/asset/src/pages/Test.vue
<template>
<div>
<el-button @click="doTest">点击测试</el-button>
<div>点击次数:{{count}}</div>
</div>
</template>
<script>
export default {
name: "Test",
data() {
return {
count: 0
}
},
methods: {
doTest() {
this.count ++;
}
}
}
</script>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
该模式下页面需要实时编译调试,具体可参考前端代码如何编译章节。
# 进入到模块静态资源根目录
cd module/Xxx/resources/asset/
# 安装依赖
cnpm install
# 开发模式:打包前端JS单页静态资源,边开发边刷新
webpack --env dev --watch
# 生产模式:打包前端JS单页静态资源
webpack
2
3
4
5
6
7
8
# 前端代码位置
系统静态资源位置说明
状态 | 位置 |
---|---|
源代码 | vendor/modstart/modstart/resources/asset/ |
编译后 | vendor/modstart/modstart/asset/ |
发布后 | public/asset/ |
模块静态资源位置说明
状态 | 位置 |
---|---|
源代码 | module/Xxx/resources/asset/ |
编译后 | module/Xxx/Asset/ |
发布后 | public/vendor/Xxx/ |
前端代码需要使用 nodejs 构建,需要预先了解前端使用 webpack, gulp 打包的基础知识。构建方式如下:
- 进入源代码目录:
module/Xxx/resources/asset/
- 安装 nodejs 依赖:
npm install
- 运行JS打包:
webpack
- 运行静态资源打包:
gulp
通常情况下,如果模块的静态文件(JS、CSS、图片等)不需要打包,可以直接创建文件夹 module/Xxx/Asset/
,然后将静态文件放入该文件夹即可。
模块安装完成后,静态资源文件会自动发布到 public/vendor/Xxx/
目录下。
如模块有静态资源结构如图
module
└── Xxx
└── Asset
├── image
│ └── test.jpg
└── style
└── test.css
2
3
4
5
6
7
模块安装后静态资源结构为
public
└── vendor
└── Xxx
├── image
│ └── test.jpg
└── style
└── test.css
2
3
4
5
6
7
在代码中进行静态资源引用时如下所示
<link rel="stylesheet" href="@asset('vendor/Xxx/style/test.css')" />
<script src="@asset('vendor/Xxx/script/test.js')"></script>
<img src="@asset('vendor/Xxx/image/test.jpg')" />
2
3
# 前端代码如何编译
# Windows
- 安装 nodejs
进入官网 http://nodejs.cn/ (opens new window) ,下载对应的nodejs安装包下载,完成安装。
推荐安装 node 14-17 ,其他版本未完全测试验证
- 打开 nodejs 命令窗口
安装完成后,点击windows启动,打开 Node.js command prompt
命令窗口
- 安装 cnpm 和打包依赖
安装 cnpm 主要是为了解决国内访问 npm 速度太慢的问题,可根据自己的情况自行选择
安装cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
安装webpack和gulp依赖
cnpm install -g webpack-cli@4 webpack@4 gulp@4
- 编译前端代码
编译ModStart代码
通常情况下系统的前端代码无需修改
# 进入到系统静态资源根目录
cd c:\xxx\vendor\modstart\modstart\resources\asset\
# 安装依赖
cnpm install
# 打包前端CSS、图片等静态资源
gulp
# 调试模式:打包前端JS单页静态资源
webpack --env dev
# 生产模式:打包前端JS单页静态资源
webpack
# 开发模式:打包前端JS单页静态资源,边开发边刷新
webpack --env dev --watch
2
3
4
5
6
7
8
9
10
11
12
编译模块代码
编译模块前端代码前,请确保ModStart的静态资源已经安装过依赖(cnpm install)
# 进入到模块静态资源根目录
cd c:\xxx\module\Xxx\resources\asset\
# 安装依赖
cnpm install
# 打包前端CSS、图片等静态资源
gulp
# 调试模式:打包前端JS单页静态资源
webpack --env dev
# 生产模式:打包前端JS单页静态资源
webpack
# 开发模式:打包前端JS单页静态资源,边开发边刷新
webpack --env dev --watch
2
3
4
5
6
7
8
9
10
11
12
# OSX / Linux
- 安装 nodejs
进入官网 http://nodejs.cn/ (opens new window) ,下载对应的nodejs安装包下载,完成安装。
推荐安装 node 14 以上版本
- 安装 cnpm 和打包依赖
安装 cnpm 主要是为了解决国内访问 npm 速度太慢的问题,可根据自己的情况自行选择
安装cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
安装webpack和gulp依赖
cnpm install -g webpack-cli@4 webpack@4 gulp@4
- 编译前端代码
编译ModStart代码
通常情况下系统的前端代码无需修改
# 进入到系统静态资源根目录
cd vendor/modstart/modstart/resources/asset/
# 安装依赖
cnpm install
# 打包前端CSS、图片等静态资源
gulp
# 调试模式:打包前端JS单页静态资源
webpack --env dev
# 生产模式:打包前端JS单页静态资源
webpack
# 开发模式:打包前端JS单页静态资源,边开发边刷新
webpack --env dev --watch
2
3
4
5
6
7
8
9
10
11
12
编译模块代码
编译模块前端代码前,请确保ModStart的静态资源已经安装过依赖(cnpm install)
# 进入到模块静态资源根目录
cd module/Xxx/resources/asset
# 安装依赖
cnpm install
# 打包前端CSS、图片等静态资源
gulp
# 调试模式:打包前端JS单页静态资源
webpack --env dev
# 生产模式:打包前端JS单页静态资源
webpack
# 开发模式:打包前端JS单页静态资源,边开发边刷新
webpack --env dev --watch
2
3
4
5
6
7
8
9
10
11
12
# 前端开发组件
# 弹窗功能
通过增加 data-dialog-request
可以快速创建一个弹窗( iframe 模式 )。
<a href="javascript:;"
data-dialog-request="/path/to/dialog"
data-dialog-width="90%"
data-dialog-height="90%">弹窗</a>
2
3
4
data-dialog-request
:弹窗请求地址data-dialog-width
:弹窗宽度data-dialog-height
:弹窗高度
在弹窗页面通过调用
parent.layer.closeAll()
可以关闭操作
具体实现方式可参考 源代码 (opens new window)
# Ajax请求
构造一个Ajax请求按钮,点击按钮时,会发送一个请求到接口。
<a href="javascript:;"
data-ajax-request="/path/to/url"
data-ajax-request-loading
data-method="get"
data-confirm="确定请求?">
模拟发送一个请求
</a>
2
3
4
5
6
7
data-ajax-request
:定义一个快速Ajax请求data-ajax-request-loading
:请求时显示 Loadingdata-method
:请求方式,默认为post
,可以显式定义为get
或post
data-confirm
:弹出二次确认弹窗
具体实现方式可参考 源代码 (opens new window)
# Ajax表单
构造一个Ajax表单,在点击提交时,表单会以Ajax的方式请求到后台接口。
<form data-ajax-form action="/path/to/url" method="post">
<input name="username" value="" />
<button type="submit">提交</button>
</form>
2
3
4
data-ajax-form
:表示当前表单是一个Ajax请求表单
具体实现方式可参考 源代码 (opens new window)
# 图片预览
构造一个图片预览,点击预览后会弹出图片预览大图。
<a href="javascript:;" data-image-preview="图片地址">预览</a>
具体实现方式可参考 源代码 (opens new window)
# 标签页打开链接
构造一个标签页打开的链接,点击后会在后台打开一个新的标签页。
<a href="/path/to/url"
data-tab-open
data-tab-title="标签标题">在标签页中打开</a>
2
3
data-tab-open
:标记这个链接在标签页中打开data-tab-title
:定义标签页的标题
注意:该功能仅限在后台页面范围,页面渲染完成后,会自动调用
window._pageTabManager.updateTitleFromTab('标题')
更新标签页的标题
具体实现方式可参考 源代码 (opens new window)
# JS库-介绍
为方便使用,系统内置了部分函数,加速系统的开发。
内置函数默认绑定在全局变量 MS
上,有不同的模块。
# JS库-基础
# MS.ready
监听 JS 脚本加载完毕事件 (ready)
MS.ready(function () {
// 页面加载完成
});
2
3
# JS库-工具类
参考文档 JS工具类手册
# JS库-组件
# 富文本 editor
默认使用了UEditor作为富文本编辑
引入JS
ModStart::js('asset/common/editor.js')
初始化富文本
<script id="content" name="content" type="text/plain"><p>初始化HTML</p></script>
<script>
// 全功能
MS.editor.basic('content');
// 精简
MS.editor.simple('content');
</script>
2
3
4
5
6
7
8
# 弹窗选择器 selectorDialog
使用示例
new MS.selectorDialog({
server: "<弹窗URL>",
callback: function (items) {
console.log("选择了", items);
}
}).show();
2
3
4
5
6
在弹出的 Iframe 页面中需要通过以下方法来触发关闭并回调
parent.__selectorDialogItems = items;
parent.layer.closeAll();
2
# 前端静态页面开发
前端静态页面通常由前端按照设计稿切图,避免与官方样式冲突,需要使用以下静态模板页面:
<!doctype html>
<html >
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, minimum-scale=0.5, maximum-scale=5, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>页面标题</title>
<meta name="keywords" content="Keywords">
<meta name="description" content="Desiption">
<link rel="stylesheet" href="https://ms-cdn.modstart.com/asset/vendor/iconfont/iconfont.css">
<link rel="stylesheet" href="https://ms-cdn.modstart.com/asset/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="https://ms-cdn.modstart.com/asset/theme/default/base.css">
<link rel="stylesheet" href="https://ms-cdn.modstart.com/asset/layui/css/layui.css">
<link rel="stylesheet" href="https://ms-cdn.modstart.com/asset/theme/default/style.css">
<!-- 引入静态切图页面样式 -->
</head>
<body >
<!-- 静态页面基础样式 -->
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
官方样式库可参考: