前端模块化

基础介绍

FastAdmin的前端部分使用或涉及到主要是RequireJS,jQuery,AdminLTE,Bower,Less,CSS
RequireJS 主要是用于JS的模块化加载
Bower 主要用于管理第三方插件
Less 主要是用于我们编写LESS和编译成CSS代码
FastAdmin中前端的最常用的第三方插件有Layer、Toastr 
Layer用于弹窗、Toastr用于提示

目录结构

public
├── assets
│   ├── addons
│   ├── css
│   ├── fonts
│   ├── img
│   ├── js
│   │   ├── backend
│   │   ├── frontend
│   ├── less
│   └── libs
assets主要存在我们框架所需要使用到的静态资源

assets/js/backend主要存在后台控制器所对应的JS模块

assets/libs主要存在第三方的插件

assets/less主要存在Less文件

assets/img主要存在图片相关文件

assets/css主要存在CSS样式相关文件

assets/addons主要存放插件的相关静态资源

标准模块

每个后端控制器都对应一个JS模块,控制器名称和JS中模块名称是一一对应的

比如我们的控制器是 application/admin/controller/Article.php
则我们JS中对应的JS模块是 public/assets/js/backend/article.js

如果我们的控制器是  application/admin/controller/Member/Teacher.php
则我们JS中对应的JS模块是  public/assets/js/backend/member/teacher.js

每一个控制器请求的方法对应JS模块中一个方法
比如控制器Article.php中的index方法
对应的是JS的article模块中的Controller.index方法

如果我们添加了自己的方法detail方法
则对应Controller.detail方法

一个JS标准控制器模块的写法如下

define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'category/index',
                    add_url: 'category/add',
                    edit_url: 'category/edit',
                    del_url: 'category/del',
                    multi_url: 'category/multi',
                    dragsort_url: '',
                    table: 'category',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                // 请求地址
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                escape: false,
                // 主键
                pk: 'id',
                // 排序字段
                sortName: 'weigh',
                pagination: false,
                commonSearch: false,
                // 字段配置
                columns: [
                    [
                        {checkbox: true},
                        {field: 'id', title: __('Id')},
                        {field: 'type', title: __('Type')},
                        {field: 'name', title: __('Name'), align: 'left'},
                        {field: 'nickname', title: __('Nickname')},
                        {field: 'flag', title: __('Flag'), operate: false, formatter: Table.api.formatter.flag},
                        {field: 'image', title: __('Image'), operate: false, formatter: Table.api.formatter.image},
                        {field: 'weigh', title: __('Weigh')},
                        {field: 'status', title: __('Status'), operate: false, formatter: Table.api.formatter.status},
                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                    ]
                ]
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        add: function () {
            Controller.api.bindevent();
        },
        edit: function () {
            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }
        }
    };
    return Controller;
});
powered by GitbookEdit Time: 2024-06-06 18:25:40