java开发edusoho,开发 · EduSoho开发指南
开发
引入第三方类库
系统引入第三方的前端模块,通常我们采用独立编译打包的方式。独立编译打包的类库需要在 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开发指南相关推荐
- java和python的web自动化有什么区别-Java Web开发和Python Web开发之间的区别
今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...
- 微信公众号Java开发-笔记02【开发接入准备、开发接入】
学习视频网址:哔哩哔哩网站 微信公众号开发-Java版 [P01-P02]微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] [P03-P04]微信公众号Java开发-笔记02[开发接入 ...
- Python开发以太坊智能合约指南(web3.py)
在以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询"ERC20代币教程",你会发现有关如何做到这一点的大量信息.以编程方式与合约交互完全是另一回事,如果你是一个 ...
- 面向开发人员的代码安全指南
面向开发人员的代码安全指南 该指南是腾讯开源的面向开发人员梳理的代码安全指南,旨在梳理API层面的风险点并提供详实可行的安全编码方案.基于DevSecOps理念,我们希望用开发者更易懂的方式阐述安全编 ...
- json c语言开发,JSON c语言开发指南
JSON c语言开发指南 1.引言 本文档是基于json-c库对数据交换进行开发所编写的开发指南,及详细解释json-c库中常用api. 适用于开发人员使用c语言对json的编程. (注:此文档jso ...
- 计算机毕业设计Java智慧社区信息管理系统开发(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java智慧社区信息管理系统开发(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java智慧社区信息管理系统开发(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目 ...
- 钉钉需要什么java知识_Java钉钉开发_01_开发前的准备
源码已上传GitHub:传送门 一.准备事项 1.1 一个能在公网上访问的项目: 1.2 一个钉钉账号 1.3 创建一个应用 登录钉钉后台->工作台->自建应用 二.钉钉的配置参数 2 ...
- Java新手看招 常用开发工具介绍
Java新手看招 常用开发工具介绍 Java的应用越来越广泛,学习Java的人也越来越多.学过程序设计的人知道,使用Basic进行程序设计,可以使用QBasic.Visual Basic等开发工具:使 ...
- java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园
最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...
- Java程序员转Android开发必读经验
小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区 ...
最新文章
- 吴恩达深度学习笔记(105)-人脸识别之面部验证与二分类
- 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.47. Gawk-4.1.1...
- wp7中的fill_parent
- 一般服务器崩了要多久能修复,阴阳师服务器崩了修复了吗?阴阳师最新4月15日更新内容...
- 作为一个有理想的程序员,必读的书都有哪些?
- java usb 无驱打印_Windows Usb 无驱动打印
- oracle关联分组查询,oracle中关联查询、分组查询
- c++的准备知识18
- 移动 web 1px 边框解决方案
- python下载前获取文件大小
- Linux源码安装PHP7.3.1
- matlab求导程序,「matlab求导」matlab 求导的一个简单程序 - 金橙教程网
- AHCI和IDE的区别,如何在AHCI模式下安装系统
- IT学习网站,各大主流网站
- Nginx 入门指南
- Windows BAT批处理脚本教程
- css3 做一个漂亮的分割线
- 如何下载安装Tableau数据可视化工具
- kafka中的配额管理(限速)机制
- 【学习OpenCV】warpAffine函数实现图像旋转