前端组件模块化?


前端采用 RequireJS+Bootstrap+SASS 的简单架构,同时使用了Python的模板语言 jinja2 (因为后台是Python写的),现在想要模块化前端组件,我是这样做的:

组件HTML:


 <!-- 组件模板通过jinja2的宏来定义 -->

{% macro user_infobox(user) %}


<div class="user-infobox">
    <div class="user-infobox-header">
        <div class="user-infobox-avatar">
            <img src="{{ user.avatar }}">
        </div>
        <div class="user-infobox-name">
            <span>{{ user.name }}"</span>
        </div>
    </div>
    <div class="user-infobox-body">
        ...
    </div>
    <div class="user-infobox-footer">
        <button class="btn btn-default user-infobox-add-friend" type="button" data-add-friend-url="{{ user.add_friend_url }}">加为好友</button>
    </div>
</div>


{% endmacro %}

组件所需CSS写在SASS模块里:


 // file : _user-infobox.scss

.user-infobox {
    background: #fff;
    // ...
}

// 最后会把所有模块的CSS编译到一个文件中

组件所需JavaScript写在requirejs模块里:


 define(['bootstrap'], function() {
    $('.user-infobox-add-friend').on('click', function() {
        $.post($(this).data('addFriendUrl'))
        .done(function(data) {
            // ...
        });
    });
    // ...
});

这个模块的数据都是通过模板渲染的,还有的模块的数据是通过ajax加载的,所以也会涉及到部分HTML标签也由JavaScript加载,感觉两种方式混用有点乱。还有就是jQuery操作DOM的方式怎么统一一下。

大家还有什么好的方法吗?

jinja2 requirejs bootstrap sass 前端模块化

A卡发烧友 9 years, 7 months ago

可以尝试一下reflux+react

Carl. answered 9 years, 7 months ago

Your Answer