ES6中可以使用export和import的方式进行模块化开发。但是在实际开发环境中,个人遇到个很不解的地方。用户与页面进行交互主要是通过click
、change
等事件进行触发的,事件触发后然后进行一系列的操作,在开发中,我将触发事件后进行的动作独立出来成为一个模块,但是响应事件这段该怎么处理呢?目前我是根据每个功能单独建立了两个js文件,一个是用于编写动作的[eventname]-action.js
文件,一个是用于触发事件的evnet.js
文件,然后用gulp将所有的evnet.js
文件合并成一个app.js
文件后再用webpack
打包。但是这样我感觉没有体现出模块化开发,跟我之前用文件名来区分功能,然后用gulp合并成一个文件没什么区别啊。
这是我的一段代码片段:
//events/updateSort.js
import updateSort from './action/AdminLogin/updateSort-action.js';
$(function(){
const inputNode = $('.category-sort');
inputNode.on('change',function(){
const sortId = $(this).val(),
categoryId = $(this).parents('tr').find('.category_id').text();
const promise = updateSort({url:'category/updatesort',method:'get',data:{sortId:sortId,categoryId:categoryId}});
promise.then(function(data){
data.status=='success'?alert('更新排序成功'):alert('更新排序失败');
});
});
});
//actions/updateSort-action.js
const updateSort = function(obj){
const promise = new Promise(function(resolve,reject){
$.ajax({
type:obj.method,
url: obj.url,
data:obj.data,
success:function(data){
resolve(data);
},
error:function(data){
reject(data);
}
});
});
return promise;
}
export default updateSort;
这就是模块化。