首页 > 其他分享 >1分钟带你入门RequireJs并了解FastAdmin中JS是如何调用的

1分钟带你入门RequireJs并了解FastAdmin中JS是如何调用的

时间:2023-09-06 11:24:42浏览次数:44  
标签:jquery function require bootstrap js FastAdmin JS hehe RequireJs

1分钟带你入门RequireJs并了解FastAdmin中JS是如何调用的

发布于 2018-08-25 22:22:57

使用fastadmin,前端方面第一个难点就是requirejs,这是一个强大却鲜为人知(对于后端开发人员来说)的框架。

在fastadmin交流群混了一段时间,发现不少小白总在问一些很基础的问题,本人实在看不下去了,于是今天用1分钟时间带大家入门requirejs,以后也将陆续写一些基础的扫盲贴,帮助小白开发者快速上手fastadmin。

模块化

一般我们引入js是这样:

<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>

RequireJs是模块化工具,每一个我们自己的js文件或者库都可以看成是一个模块,按需引入。

它是这样写的:

<script data-main="js/main" src="js/require.js"></script>

src是引入requrejs框架文件,data-main是我们自己的js的总入口。js/main对应的js文件是js/main.js(可自行命名)

不信你可以看看fa中admin/view/common/script.html里面是不是这样写的。

然后浏览器就会加载require.js,而requirejs会帮我们自动加载main.js。

那我们我们怎么再引入别的js文件?比如自己写的js和第三方js,如jquery

如何使用自定义js或第三方js

引用第三方库

使用requre.config({}) 配置模块,如:

require.config({
    paths: {
        'lang': "empty:",
        'form': 'require-form',
        'table': 'require-table',
        'upload': 'require-upload',
        'validator': 'require-validator',
        'drag': 'jquery.drag.min',
        'drop': 'jquery.drop.min',
        'echarts': 'echarts.min',
        'echarts-theme': 'echarts-theme',
        'jquery': '../libs/jquery/dist/jquery.min',
     
    },
    // shim依赖配置
    shim: {
        'addons': ['backend'],
        'bootstrap': ['jquery'],
        'bootstrap-table': {
            deps: [
                'bootstrap',
//                'css!../libs/bootstrap-table/dist/bootstrap-table.min.css'
            ],
            exports: '$.fn.bootstrapTable'
        },
        'bootstrap-table-lang': {
            deps: ['bootstrap-table'],
            exports: '$.fn.bootstrapTable.defaults'
        },
      
    },
    map: {
        '*': {
            'css': '../libs/require-css/css.min'
        }
    },
    waitSeconds: 30,
    charset: 'utf-8' // 文件编码
});

config中paths用来配置支持AMD规范的库和js文件,shim是用来配不支持AMD规范的js。配好之后,假设现在要使用jquery和bootstrap,只要用require方法:

require(['jquery', 'bootstrap'], function ($, undefined) {
    //该function将在引入jquery和bootstrap完成之后执行。
});

引用自己写的js

在fastadmin中,我们并没有使用config配置我们自己写的js,如后台某个类增改查方法所在的js文件,是不是很好奇是怎么被调用到的?

前面说了requirejs是模块化工具,要使用我们自己定义的js,首先得用模块化的方式编写我们的js,使用define定义一个模块:

define('modelname',['jquery','xxx'], function ($,xxx) {

    var hehe = {
        function1: function () {
            
        },
        function2: function () {
            
        },
        function3: function () {
            
        }
    };
    return hehe;
});

define有三个参数,第一个是模块名(可以不写,默认与模块名与文件名同名),第二个是当前模块依赖的其他模块,第三个是一个function,模块体,要求必须return一个数据。

在这里我们return了hehe这个对象,这个对象中定义了好几个function,不信你瞅瞅fastadmin里面的js是不是都是这样写的。

上面这段代码如果用php来理解,可以看作是:

require jquery.php
require xxx.php

class hehe{
    public function function1(){

    }
    public function function2(){

    }
}

那么我们在其他地方就可以使用这个模块:

require(['jquery', 'hehe'], function ($, hehe) {
    //调用hehe模块提供的方法
    hehe.function1();
    hehe.function2();
    hehe.function3();
});

这段代码如果也用php的思维来理解,你可以看作是:

require jquery.php;
reuqire hehe.php

hehe.function1();
hehe.function2();
hehe.function3();

这时候一定有人有疑问,在开发fastadmin的时候,我们并没有进行调用形如hehe.function1();的方法,那么我们的index,add,edit等页面对应的js代码是如何被执行的?

请大家看require-backend.js文件,Karson老大帮我们调用了:

image.png

所以我们只需写好对应的js文件,Karson老大帮我们根据控制器名和方法名自动调用了对应的js文件和对应的js方法。

如何了解fastadmin中的requirejs

先看admin/view/common/script.html,你会发现项目的入口js就是require-backend.js

然后看require-backend.js,你会发现其中使用config配置了一些第三方模块。并在最后调用了当前控制器和方法对应的js

image.png

总结

  1. 自己写一个js,要使用define,并在function体中return
  2. 调用其他js,使用require(),并在function体中编写业务代码
  3. require-backend.js中根据当前控制器名和方法名自动帮我们调用了对应的js文件和其中的方法

PS:本帖只是带你简单入门requirejs,并了解fastadmin中是如何使用requirejs的,requirejs还有不少具体的配置细节需要大家自己阅读官方文档

标签:jquery,function,require,bootstrap,js,FastAdmin,JS,hehe,RequireJs
From: https://www.cnblogs.com/tomcat2022/p/17681785.html

相关文章

  • vuejs3.0 从入门到精通——脚手架安装
    脚手架安装 VueCLI是基于Vue.js进行快速开发的完整系统,支持搭建交互式项目、快速开始零配置原型开发、丰富的官方插件集合,以及完全图形化地创建和管理Vue.js项目的用户界面。 VueCLI致力于将Vue.js生态中的工具基础标准化,它确保各种构件工具基于智能的默认配置即......
  • JSDoc语法规范
    JSDoc是JavaScript中用于添加文档注释的一种常见方式。它是一种在注释中使用特定标记和语法来描述代码功能和用法的标准化方式。以下是JSDoc的主要语法规范和常见标记:基本注释语法:/***这里是注释的内容。*/描述块:描述块通常位于函数、方法、类等代码块之前,用于描......
  • Node.js 使用 officecrypto-tool 读取加密的 Excel 和 Word 文档, 支持 xlsx 和 docx
    Node.js使用officecrypto-tool读取加密的Excel(xls,xlsx)和Word(docx)文档,还支持xlsx和docx文件的加密(具体使用看文档)。暂时不支持doc文件的解密传送门:officecrypto-tool读取加密的Excel示例一:xlsx-populate//只支持xlsx,xlsx-populate自带了解密功能......
  • 学习 vue.js 3.0 中遇到的前端相关网站汇总
    序章最近学习vue.js,期间遇到不少相关网站,特整理于本文。 学习教程菜鸟教程https://www.runoob.com/ 阮一峰:Flex布局教程语法:https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html实例:https://www.ruanyifeng.com/blog/2015/07/flex-examples.html W3Csch......
  • JS基础-数据类型
    JS作为弱类型的编程语言,在声明变量时,统一使用var、const、或者let关键字。但是每个变量都有一个隐式的数据类型。数据类型检测使用typeof关键字可以检测数据类型。<script> //检测数字类型console.log(typeof(3));</script>Number数字类型整形、浮点型在......
  • 【JS】JS笔记
    JS笔记初识JS浏览器执行JS简介浏览器分为:渲染引擎:用来解析HTML和CSS,俗称内核。比如chrome的blinkJS引擎:也成为JS解释器,用来读取JS代码并对其进行后台处理。比如chrome的V8JS的组成ECMAScript:JavaScript语法,规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵循......
  • PostgreSQL JSON
    准备CREATETABLEorders( idserialNOTNULLPRIMARYKEY, infojsonNOTNULL);INSERTINTOorders(info)VALUES('{"customer":"LilyBush","items":{"product":"Diaper","qty":24}}'......
  • Cannot deserialize value of type `com.xx.xxxx` from Array value (token `JsonToke
    点击提交按钮的时候,直接服务器端报上面的错,意思是json不能解析。因为程序中用到了递归,就是自己引用了自己(实体类)。原因:实体类中children定义的是对象的形式,但是前端定义的是数组[]的形式。解决:前端改成对象形式,{},这样前后端一致就可以正常传值了。  上面children赋值了......
  • 【坑】VUE中动态数据使用 wow.js 没效果的问题
    一般来说正常使用都是在mounted函数中mounted(){this.$nextTick(()=>{this.$wow.init()})}这样如果是死数据是可以正常出现效果的但是如果是请求回来的数据是没有效果的需要改一下生成时机  此处的newList即为请求的数据watch:{newsl......
  • Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档
    Node.js使用officecrypto-tool读取加密的Excel(xls,xlsx)和Word(docx)文档,还支持xlsx和docx文件的加密(具体使用看文档)。暂时不支持doc文件的解密传送门:officecrypto-tool读取加密的Excel示例一:xlsx-populate//只支持xlsx,xlsx-populate自带了解密功能,/......