# Js代码写在哪里
* EpiiAdmin 在后台解析模板,并显示给浏览器后,前端交互功能与后台完全分离,可以把前台单独理解为App,后台数据作为环境变量Args 作为启动参数。
* 前端基础框架与业务系统可以完全分离(推荐且默认),也可以合在一起。
* ***80%的交互无需写Js代码,只需使用css3 属性标签即可。***
## 虽然 *`80%`* 的交互性功能不用写Js代码,但在一些具体需求上,我们需要编写自己的js代码,那么这些应该写在哪里呢?
### 第一种方法、在html模板中,使用 *`window.onEpiiInit`* 方法 。
```javascript
<script>
window.onEpiiInit(function() {
console.log("js in html 1");
});
window.onEpiiInit(function() {
console.log("js in html 2");
});
</script>
```
输出
```javascript
js in html 1
js in html 2
```
为什么要在 `window.onEpiiInit` 中写,是因为前台框架默认加载了一些必须的组件,如`requireJs,layer,addtabs,jquery,Args,bootstrip` 等。加载后即可大胆的使用这些组件。
> 在`html`中写`js` 代码是一种传统的编写方式(对于一些小需求也是最方便的),很多后台人员都习惯于这样写,但EpiiAdmin 仍然不推荐这样编写代码。
### 第二种方法、建立`js`文件,并被框架引用,使得`Js`与`html`完全分离。
默认js文件根目录目录为:
```javascript
public
static
js
app
```
我们建立 `user/index.js`
```javascript
public
static
js
app
user/index.js
```
内容为:
```javascript
console.log("js in html 3");
```
并且(必须)在php程序中,在action中使用 `jsAppName` 方法加载js文件(默认不会自动加载,因为大部分的业务并不需要单独写js文件。或者很小的功能直接用第一种方法写在html中了)
```php
$this->jsAppName("user/index");
```
输出(与第一种方法的html同属一个页面)
```javascript
js in html 1
js in html 2
js in html 3
```
EpiiAdmin 是基于 require.js 对js文件的管理。推荐按照标准AMD写法,返回的对象如果含有`run`方法,则会默认执行`run`方法.
`user/index.js`改为:
```javascript
define(['jquery',"args"],function ($,Args) {
console.log("js in html amd");
var out = {
run:function() {
console.log("js in html amd and run");
}
}
return out;
});
```
输出
```javascript
js in html 1
js in html 2
js in html amd
js in html amd and run
```
- 简介/安装
- 快速搭建一个用户中心
- Js代码写在哪里
- 环境变量Args
- 前台组件
- Dialog方式打开页面
- Addtab方式打开页面
- Alert提醒框
- Confirm确认框
- Prompt输入框
- 表单Form
- 列表Table/list
- 基础Table
- 控制Table
- 搜索Table
- 城市选择city-picker
- 文件上传组件
- 基础版本
- 简单版本
- 更多实用组件
- 后台
- 实现方式综述
- 命令管理类JsCmd
- 命令
- Alert命令
- Url命令
- Toast命令
- JsEval命令
- Close命令
- Refresh命令
- CloseAndRefresh命令
- 常用命令的简化
- 文件上传
- 后台基础
- 后台进阶
- 左侧导航badge配置