Spoke——可重用的前端组件
spoke的Python项目详细描述
spoke为构建可重用的前端组件提供了一个框架。
安装
从pip
安装v0.2sudo pip install spoke==0.2
从源安装v0.2
curl https://github.com/axialmarket/spoke/archive/version_0.2.tar.gz | tar vzxf - cd spoke sudo python setup.py install
什么是发言权?
spoke是一个可执行的javascript文件,可以包含javascript、css和html模板。此外,一个spoke可以依赖于其他spoke,这允许我们将前端组件划分为小的离散块,并在构建时为一个页面创建一个可加载的javascript文件,该页面只包含我们需要的功能。现在,您可能想知道我们如何将css和html模板嵌入到可执行的javascript文件中。我们使用的方法有些简单;我们将css或html内容编码成一个字符串,并将其嵌入到一些简单的javascript中,该javascript对内容进行解码并将其动态添加到dom中。
一个简单的例子
让我们创建一个用于呈现用户名的分支。这听起来像是一个太简单的任务,但是可能需要一些复杂的逻辑:
- 为了节省空间,如果用户的全名超过20个字符,我们将只呈现他们的首字母和姓氏。
- 如果用户是内部用户,我们希望用(内部)注释他们的名称。
- 如果用户是伪装成普通用户的内部用户,我们希望用(masq)注释他们的名称。
对于本例,我们将使用主干模型和视图以及下划线模板,但这些是实现选择,而不是仅仅因为我们正在创建spoke就强加给我们。
下面是我们将使用的主干模型:
var UsernameModel = Backbone.Model.extend({ defaults: { first_name: "", last_name: "", is_internal: false, is_masq: false } });
视图非常直观:
var UsernameView = Backbone.View.extend({ className: 'username', render: function() { this.$el.html(this.template(this.model.attributes)); return this; }, template: _.template($('#username-template').html()) });
我们将下划线模板存储在带有“text/template”类型的标记中:
<script id="username-template" type="text/template"> <% if (first_name.length + last_name.length >= 20) { %> <%= first_name.substr(0,1) %>. <% } else { %> <%= first_name %> <% } > <%= last_name %> <% if (is_internal) { %>(internal)<% } %> <% else if (is_masq) { %>(masq)<% } %> </script>
此外,我们还有一个css文件来控制用户名的样式:
.username { font-size: 18px; color: #333; white-space: nowrap; }
要将其转换为分支,我们只需将这些源文件存储在分支源树中,该树位于/var/spoke/:
js/models/Username.js js/views/Username.js html/username.html.tpl css/username.css
然后,我们将这个spoke的定义(我们将称之为“惊喜”、“惊喜”、“用户名”)添加到spoke配置中,并将其添加到/etc/spoke/:
# /etc/spoke/username.cfg [username] js = [ 'models/Username.js', 'views/Username.js' ] html = 'username.html.tpl' css = 'username.css' spokes = 'backbone'
spoke不需要拥有所有这些类型的文件;spoke可能只包含css或javascript内容。另外,请注意,我们已经使“username”发言依赖于“backbone”发言。“主干”辐条的定义依次引用“下划线”辐条。当我们使用spokec生成spoke时,这些依赖项将被跟踪并包含在输出中。如您所料,如果一个spoke被多次引用,那么它只包含在输出中一次。
既然我们已经定义了这个spoke,下面我们将调用spokec来生成它:
spokec username [add'l spokes] -o path/to/output.js
每次调用spokec都会生成一个可执行的javascript文件,其中包含所有指定的spoke及其依赖项。因此,通常一个服务会为其所有页面创建一个单分支文件,如果服务提供的页面明显不同,则有时会创建几个不同的分支文件。
如需更多帮助
spokec --help
许可证
bsd 3子句,请参见LICENSE.txt。