开发

引入第三方类库

系统引入第三方的前端模块,通常我们采用独立编译打包的方式。独立编译打包的类库需要在 webpack.config.js 中的 libs 键下声明。

module.exports = {

// ...

libs: {

'vendor': ['libs/base.js'], //可以是一个js文件,

'html5shiv': ['html5shiv'], // 也可以是一个 npm 依赖包

'fix-ie': ['console-polyfill', 'respond-js'], // 也可以声明多个,会自动合并

'jquery-validation': ['libs/js/jquery-validation.js'],

// ...

},

// ...

}

配置说明:

libs 是一个对象,键为编译打包后的文件名,值为需编译的文件,可以为 JavaScript 文件、NPM 依赖包的名字,也可以指定多个文件或 NPM 包名。

其中 libs/base.js 中声明了系统的前端基础模块,即几乎每个页面需要用到的类库,例如 jQuery、bootstrap。

libs/ 开头的前端文件可以在 app/Resources/static-src/libs 下找到。

编译打包后的文件,会输出到 web/static-dist/libs 目录下。在页面中通过 Twig 的 script 函数引入,例如:

{%do script(['libs/base.js']) %}

注意

目前,只有 EduSoho 本身的开发以及定制开发才能通过以上方式引入第三方类库。插件、主题的开发如需引入第三方类库,可通过将类库复制到插件、主题的 js 目录下。

目录别名

目录别名用于方便引用前端文件。

别名

对应目录

app

app/Resources/static-src/app

libs

app/Resources/static-src/libs

common

app/Resources/static-src/common

custombundle

src/CustomBundle/Resources/static-src

{CODE}plugin

plugins/{CODE}/Resources/static-src

{CODE}theme

web/themes/{CODE}/Resources/static-src

nodemodules

node_modules

(注:{CODE}为插件、主题的编码。)

例子:

import Autocomplete from 'common/autocomplete';

主系统的前端开发

EduSoho 主系统自身功能页面模块的前端模块文件位于 app/Resources/static-src/app 下,目录结构如下:

edusoho

app/Resources/static-src/app/

js/

{PAGE_A}/

index.js

{PAGE_B}/

index.js

main.js

less/

main.less

less/

img/

fonts/

media/

目录结构说明:

js/main.js 为所有页面都需要用到的 JavaScript。

js/{PAGE_A}/index.js 为页面级别的 JavaScript 文件,在页面中通过 {%do script(.....) %} 的方式引入。

less/main.less 为页面的样式文件,会编译打包到 web/static-dist/css 目录下。

img 为图片文件目录。

font 为字体文件目录。

media 为视频、PPT等媒体文件目录。

注意

img 图片文件目录,在前端构建时,会自动复制到对应的输出目录下。

插件、主题的前端开发

插件、主题的前端开发类似,唯一的区别是各自的源文件目录,以及编译打包输出目录不同,见下表。

源文件目录

输出目录

插件

plugins/{CODE}/Resources/static-src

web/static-dist/{CODE}plugin

主题

web/themes/{CODE}/Resources/static-src

web/static-dist/{CODE}theme

(注:{CODE}为插件、主题的编码。)

目录结构如下:

edusoho/

/plugins/{CODE}Plugin/Resources/static-src/ (or /web/themes/{CODE}/static-src/)

js/

{PAGE_A}/

index.js

{PAGE_B}/

index.js

main.js

less/

main.less

img/

fonts/js/main.js 为当前插件(主题)下,所有页面都需要用到的 JavaScript 文件。

js/{PAGE_A}/index.js 为页面级别的 JavaScript 文件,在页面中通过 {%do script(.....) %} 的方式引入。

less/main.less 为页面的样式文件,会编译打包输出到 web/static-dist/{CODE}plugin/css( or web/static-dist/{code}theme/css) 目录下。

img 为图片文件目录。

fonts 为字体文件目录。

最佳实践

依赖包的样式引入

//引入less、css时前面需加'~',以便让loader识别alias别名

@import '~nodemodules/xx/xxx.less';

模块组件样式引入

不希望单独打包出css文件的,以下面形式引入:

import '!style-loader?insertAt=top!css-loader!less-loader!xxx.less';

import '!style-loader?insertAt=top!css-loader!xxx.css';

java开发edusoho,开发 · EduSoho开发指南相关推荐

  1. java和python的web自动化有什么区别-Java Web开发和Python Web开发之间的区别

    今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...

  2. 微信公众号Java开发-笔记02【开发接入准备、开发接入】

    学习视频网址:哔哩哔哩网站 微信公众号开发-Java版 [P01-P02]微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] [P03-P04]微信公众号Java开发-笔记02[开发接入 ...

  3. Python开发以太坊智能合约指南(web3.py)

    在以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询"ERC20代币教程",你会发现有关如何做到这一点的大量信息.以编程方式与合约交互完全是另一回事,如果你是一个 ...

  4. 面向开发人员的代码安全指南

    面向开发人员的代码安全指南 该指南是腾讯开源的面向开发人员梳理的代码安全指南,旨在梳理API层面的风险点并提供详实可行的安全编码方案.基于DevSecOps理念,我们希望用开发者更易懂的方式阐述安全编 ...

  5. json c语言开发,JSON c语言开发指南

    JSON c语言开发指南 1.引言 本文档是基于json-c库对数据交换进行开发所编写的开发指南,及详细解释json-c库中常用api. 适用于开发人员使用c语言对json的编程. (注:此文档jso ...

  6. 计算机毕业设计Java智慧社区信息管理系统开发(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java智慧社区信息管理系统开发(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java智慧社区信息管理系统开发(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目 ...

  7. 钉钉需要什么java知识_Java钉钉开发_01_开发前的准备

    源码已上传GitHub:传送门 一.准备事项 1.1  一个能在公网上访问的项目: 1.2  一个钉钉账号 1.3 创建一个应用 登录钉钉后台->工作台->自建应用 二.钉钉的配置参数 2 ...

  8. Java新手看招 常用开发工具介绍

    Java新手看招 常用开发工具介绍 Java的应用越来越广泛,学习Java的人也越来越多.学过程序设计的人知道,使用Basic进行程序设计,可以使用QBasic.Visual Basic等开发工具:使 ...

  9. java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园

    最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...

  10. Java程序员转Android开发必读经验

    小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区 ...

最新文章

  1. 吴恩达深度学习笔记(105)-人脸识别之面部验证与二分类
  2. 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.47. Gawk-4.1.1...
  3. wp7中的fill_parent
  4. 一般服务器崩了要多久能修复,阴阳师服务器崩了修复了吗?阴阳师最新4月15日更新内容...
  5. 作为一个有理想的程序员,必读的书都有哪些?
  6. java usb 无驱打印_Windows Usb 无驱动打印
  7. oracle关联分组查询,oracle中关联查询、分组查询
  8. c++的准备知识18
  9. 移动 web 1px 边框解决方案
  10. python下载前获取文件大小
  11. Linux源码安装PHP7.3.1
  12. matlab求导程序,「matlab求导」matlab 求导的一个简单程序 - 金橙教程网
  13. AHCI和IDE的区别,如何在AHCI模式下安装系统
  14. IT学习网站,各大主流网站
  15. Nginx 入门指南
  16. Windows BAT批处理脚本教程
  17. css3 做一个漂亮的分割线
  18. 如何下载安装Tableau数据可视化工具
  19. kafka中的配额管理(限速)机制
  20. 【学习OpenCV】warpAffine函数实现图像旋转

热门文章

  1. 【45】机械硬盘:Google早期用过的“黑科技”
  2. Java学习:Java就业前景
  3. StrongSwan测试环境概述
  4. 无法读取excel: Excel file format cannot be determined, you must specify an engine manually.建模题目的数据
  5. 安兰德写作竞赛可以获得多少奖金?
  6. DRF不通过pk,多个字段自定义删除
  7. Identity(四)
  8. 错题本-----高速公路超速处罚
  9. 【Arduino 和 HC-05 蓝牙模块完整教程】
  10. Redis集群只读问题