4.4. 前端开发
前端开发
ModStart框架使用了 jQuery 等基础前端技术,页面不限于使用 Vue、React 作为前端技术集成。
前端代码位置
- 源代码
- ModStart基础前端代码位于
vendor/modstart/modstart/resources/asset/
。 - 不同模块的前端代码位于
module/Xxx/resources/asset/
- ModStart基础前端代码位于
- 编译后的代码
- ModStart基础前端代码位于
vendor/modstart/modstart/asset/
。 - 不同模块的前端代码位于
module/Xxx/Asset/
- ModStart基础前端代码位于
前端代码需要使用 nodejs 构建,需要预先了解前端使用 webpack, gulp 打包的基础知识。
前端代码如何编译
Windows
- 安装 nodejs
进入官网 nodejs.cn/ ,下载对应的nodejs安装包下载,完成安装。
推荐安装 node 14 ,其他版本未完全测试验证
- 打开 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
编译模块代码
编译模块前端代码前,请确保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
OSX / Linux
- 安装 nodejs
进入官网 nodejs.cn/ ,下载对应的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
编译模块代码
编译模块前端代码前,请确保ModStart的静态资源已经安装过依赖(cnpm install)
# 进入到模块静态资源根目录
cd module/Xxx/resources/asset
# 安装依赖
cnpm install
# 打包前端CSS、图片等静态资源
gulp
# 调试模式:打包前端JS单页静态资源
webpack --env dev
# 生产模式:打包前端JS单页静态资源
webpack
# 开发模式:打包前端JS单页静态资源,边开发边刷新
webpack --env dev --watch
前端开发组件
弹窗功能
通过增加 data-dialog-request
可以快速创建一个弹窗( iframe 模式 )。
<a href="javascript:;" data-dialog-request="/path/to/dialog">弹窗</a>
在弹窗页面通过调用
parent.layer.closeAll()
可以关闭操作
具体实现方式可参考 源代码
Ajax请求
构造一个Ajax请求按钮,点击按钮时,会发送一个请求到接口。
<a href="javascript:;" data-ajax-request="/path/to/url" data-ajax-request-loading data-method="get" data-confirm="确定请求?">
模拟发送一个请求
</a>
data-ajax-request
:定义一个快速Ajax请求data-ajax-request-loading
:请求时显示 Loadingdata-method
:请求方式,默认为post
,可以显式定义为get
或post
data-confirm
:弹出二次确认弹窗
具体实现方式可参考 源代码
Ajax表单
构造一个Ajax表单,在点击提交时,表单会以Ajax的方式请求到后台接口。
<form data-ajax-form action="/path/to/url" method="post">
<input name="username" value="" />
<button type="submit">提交</button>
</form>
data-ajax-form
:表示当前表单是一个Ajax请求表单
具体实现方式可参考 源代码
图片预览
构造一个图片预览,点击预览后会弹出图片预览大图。
<a href="javascript:;" data-image-preview="图片地址">预览</a>
具体实现方式可参考 源代码
实例参考
Vue单页应用集成:
Vue普通方式集成:
JS库-介绍
为方便使用,系统内置了部分函数,加速系统的开发。
内置函数默认绑定在全局变量 MS
上,有不同的模块。
JS库-基础
MS.ready
监听 JS 脚本加载完毕事件 (ready)
MS.ready(function () {
// 页面加载完成
});
JS库-弹窗 dialog
MS.dialog.loadingOn
页面遮罩显示
MS.dialog.loadingOn([msg])
msg
显示文字,可选,默认为 Loading 图标
MS.dialog.loadingOff
页面遮罩关闭
MS.dialog.loadingOff()
MS.dialog.tipSuccess
提示成功信息
MS.dialog.tipSuccess(msg)
msg
提示文字
MS.dialog.tipError
提示错误信息
MS.dialog.tipError(msg)
msg
提示文字
MS.dialog.alertSuccess
成功信息模态框
MS.dialog.alertSuccess(msg)
msg
提示文字
MS.dialog.alertError
错误信息模态框
MS.dialog.alertError(msg)
msg
提示文字
MS.dialog.confirm
确认信息框
MS.dialog.confirm(msg, callback)
msg
提示文字callback
回调函数
MS.dialog.dialogContent
弹出 HTML
内容
MS.dialog.dialogContent(content)
content
HTML内容
MS.dialog.dialog
弹出 URL
链接
MS.dialog.dialog(url)
url
链接
JS库-接口 api
MS.api.post
发送 post
请求
MS.api.post( url , param, callback )
url
string
请求地址param
object
请求数据callback
请求完成回调函数
发送请求实例
MS.api.post( '/login' , {username:'aa',password:'bb'}, function(res){
// 请求完成
MS.api.defaultCallback(res,{
success:function(res){
// 请求成功 (res.code===0)才会进入这里,如果请求失败自动按照默认规则处理(弹窗、跳转等)
}
})
})
工具类-其他 util
MS.util.loadScript
动态加载 script
MS.util.loadScript(url, callback)
url
js 链接callback
加载完成回调函数
MS.util.loadStylesheet
动态加载 CSS
MS.util.loadStylesheet(url, callback)
url
CSS 链接callback
加载完成回调函数
MS.util.md5
计算字符串MD5值
MS.util.md5(str)
str
字符串
MS.util.randomString
生成随机字符串
MS.util.randomString(len)
len
随机 字符串长度
MS.util.urlencode
字符串URL编码
MS.util.urlencode(str)
str
MS.util.specialchars
字符串HTML转义
MS.util.specialchars(str)
str
字符串
MS.util.scrollTo
页面滚动到元素位置
MS.util.scrollTo(target, container)
target
元素选择器container
父容器选择器,为空表示整个页面
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>
弹窗选择器 selectorDialog
使用示例
new MS.selectorDialog({
server: "<弹窗URL>",
callback: function (items) {
console.log("选择了", items);
}
}).show();
在弹出的 Iframe 页面中需要通过以下方法来触发关闭并回调
parent.__selectorDialogItems = items;
parent.layer.closeAll();
推荐文章: