4.4. 前端开发

未匹配的标注

前端开发

ModStart框架使用了 jQuery 等基础前端技术,页面不限于使用 Vue、React 作为前端技术集成。

前端代码位置

  • 源代码
    • ModStart基础前端代码位于 vendor/modstart/modstart/resources/asset/
    • 不同模块的前端代码位于 module/Xxx/resources/asset/
  • 编译后的代码
    • ModStart基础前端代码位于 vendor/modstart/modstart/asset/
    • 不同模块的前端代码位于 module/Xxx/Asset/

前端代码需要使用 nodejs 构建,需要预先了解前端使用 webpack, gulp 打包的基础知识。

前端代码如何编译

Windows

  1. 安装 nodejs

进入官网 nodejs.cn/ ,下载对应的nodejs安装包下载,完成安装。

推荐安装 node 14 ,其他版本未完全测试验证

  1. 打开 nodejs 命令窗口

安装完成后,点击windows启动,打开 Node.js command prompt 命令窗口

  1. 安装 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
  1. 编译前端代码

编译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

  1. 安装 nodejs

进入官网 nodejs.cn/ ,下载对应的nodejs安装包下载,完成安装。

推荐安装 node 14 以上版本

  1. 安装 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
  1. 编译前端代码

编译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:请求时显示 Loading
  • data-method :请求方式,默认为 post,可以显式定义为 getpost
  • 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();

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~