baidu yogurt <a href="https://github.com/fex-team/yogurt#page-%E7%9B%AE%E5%BD%95"></a>page 目录<a href="https://github.com/fex-team/yogurt#static-%E7%9B%AE%E5%BD%95"></a>st 前端集成解决方案

程序名称:baidu yogurt <a href="https://github.com/fex-team/yogurt#page-%E7%9B%AE%E5%BD%95"></a>page 目录<a href="https://github.com/fex-team/yogurt#static-%E7%9B%AE%E5%BD%95"></a>st

授权协议: 未知

操作系统: 跨平台

开发语言: JavaScript

baidu yogurt <a href="https://github.com/fex-team/yogurt#page-%E7%9B%AE%E5%BD%95"></a>page 目录<a href="https://github.com/fex-team/yogurt#static-%E7%9B%AE%E5%BD%95"></a>st 介绍

yogurt 是基于 fis 扩展针对服务端为
express.js 的前端集成解决方案。

在阅读此文档之前,希望你最好对 fis 有一定的了解。此工具主要负责前端编译与环境模拟,让你更专注、更快速地开发前端部分,关于后端 express
框架部分,请查看 yog

特点

  • 扩展 swig 模板引擎,提供易用的 html、head、body、widget、script、style 等等标签。基于这些标签后端可以自动完成对页面的性能优化。

  • 基于 widget 标签,可以轻松实现让 widget 以 BigPipe 模式渲染,详情请查看这里

  • 提供便利的环境、数据和页面模拟。tpl 自动与 json 数据文件关联,本地就能预览线上效果。

  • 此工具负责生成 tpl 和关联的静态资源。后端只需关注页面逻辑,数据获取以及渲染模板即可,无需关心前端领域。

[](https://github.com/fex-

team/yogurt#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)快速开始

如果还没有安装 node 请先安装 node.

# 安装 yogurt 到全局npm install -g yogurt# 安装 lights 如果你还没安装过。npm install -g lights# 下载 demo.lights install yogurt-demo# 进入 yogurt-demo 目录, release 后就可以预览了。cd yogurt-demo
yogurt release
yogurt server start

[](https://github.com/fex-

team/yogurt#%E7%9B%AE%E5%BD%95%E8%A7%84%E8%8C%83)目录规范

├── page                    # 页面 tpl
├── static                  # 静态资源
├── widget                  # 各类组件
├── test                    # 数据与页面模拟目录
├── fis-conf.js             # fis 编译配置
├── server.conf             # 测试页面转法规则配置文件

page 目录

所有页面级别的模板文件,放在此目录。此tpl 可以直接在浏览器中预览。比如 page/index.tpl 可以通过
http://127.0.0.1:8080/{{ namespace
}}/page/index 访问。 其中 {{ namespace }} 为此项目的名称。

需要强调的的是,模板引擎采用的是 swig,
可以采用模板继承机制来实现模板复用。

static 目录

用来存放所有静态资源文件,css, js, images 等等。如:

├── css
│   ├── bootstrap-theme.css
│   ├── bootstrap.css
│   └── style.css
├── fonts
│   ├── glyphicons-halflings-regular.eot
│   ├── glyphicons-halflings-regular.svg
│   ├── glyphicons-halflings-regular.ttf
│   └── glyphicons-halflings-regular.woff
└── js
    ├── bigpipe.js
    ├── bootstrap.js
    ├── jquery-1.10.2.js
    └── mod.js

widget 目录

用来存放各类组件代码。组件分成3类。

  1. 模板类:包含 tpl, 可以选择性的添加 js 和 css 文件,同名的 js 和 css 会被自动加载。

模板类文件,可以在模板中通过 widget 标签引用。如

    {% widget "example:widget/pagelets/jumbotron/jumbotron.tpl" %}
  1. js 类: 主要包含 js 文件,放在此目录下的文件一般都会自动被 amd define 包裹,可选择性的添加同名 css 文件,会自动被引用。

此类组件,可以在 tpl 或者 js 中通过 require 标签引用。

  1. 纯 css 类:只是包含 css 文件。比如 compass. 同样也是可以通过 require 标签引用。

test 目录。

用来存放测试数据和测试脚本。

team/yogurt#%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE)测试数据。

在你本地预览 page 目录下的 tpl 的时候,会自动在此目录下找同名的 json 文件,并将数据与之关联。

http://127.0.0.1:8080/example/page/index 预览的是 example 模块下,page/index.tpl
文件。如果 test/page/index.json 文件存在,则此 json 的里面的所有数据都可以在 tpl 里面使用到。

同时,除了管理同名的 json 文件外,还会关联 test 目录下同名的 js 文件,在 js 中可以动态的添加数据。

/test/page/index.js

module.exports = function(req, res, setData) {
    var origin = res.locals || {};

    setData({
        title: 'Overided ' + origin.title,
    });};

另外:此目录下还可存放其他文件,搭配 server.conf 配置,目录各类线上页面。

比如 test/data.json 文件,想通过 http://127.0.0.1:8080/testjson 页面可以访问到。只需要在
server.conf 里面配置如下内容。

rewrite \/testjson$ /test/example/data.json

team/yogurt#%E6%B5%8B%E8%AF%95%E8%84%9A%E6%9C%AC)测试脚本

在 test 目录下的 js,也可以像 jsp, php 一样,写些动态的页面。如:

/test/ajaxResponse.js

module.exports = function(req, res, next) {
    res.write('Hello world');

    res.setHeader('xxxx', 'xxx');

    res.end('The time is ' + Date.now());};

配合 server.conf 可以用来模拟线上的
ajax 响应页面。

rewrite \/ajax$ /test/example/ajax.js

这样当你请求 http://127.0.0.1:8080/ajax 页面的时候,就会自动执行这个脚本 js.

fis-conf.js

编译配置文件,详情请查看配置 API

server.conf

用来配置页面转发,支持 rewrite 和 redirect 两条指令,此转发功能只有在本地预览中才有效。

语法非常简单。

指令名称  正则  目标地址

栗子。

# 首页
rewrite \/$ /example/page/index

# json 文件
rewrite \/json /example/data.json

# 自定义页面。
rewrite \/ajax /example/ajax.js

非 rewrite, redirect 打头的行,都被认为是注释。

BigPipe

采用 bigpipe 方案,允许你在渲染页面的时候,提前将框架输出,后续再把耗时的 pagelet 通过 chunk 方式输出到页面,以加速网页渲染。

目前此机制已集成在 yogurt 中,通过给 widget 设置不同的模式便能自动启动。

  1. sync 默认就是此模式,直接输出。

  2. quicking 此类 widget 在输出时,只会输出个壳子,内容由用户自行决定通过 js,另起请求完成填充,包括静态资源加载。

  3. async 此类 widget 在输出时,也只会输出个壳子,但是内容在 body 输出完后,chunk 输出 js 自动填充。widget 将忽略顺序,谁先准备好,谁先输出。

  4. pipeline 与 async 基本相同,只是它会严格按顺序输出。

后端的 controller 中可以通过 res.bigpipe.bind('pageletId', function() {}) 给页面中
pagelet 延时绑定数据。

在前端模拟环境里面,则可以在通过在模拟数据的 js 文件中,通过设置 onPagelet 事件,延时给 pagelet 绑定数据。

test/page/index.js

module.exports = function(req, res, setData) {

    setData({

        onPagelet: function(id, cb) {

            // id 为 pagelet 的 id

            // 模拟异步获取数据。
            setTimeout(function() {

                cb(null, {
                    title: id,
                    content: 'Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.'
                });

                // 随机延时时间
            }, 2000 * Math.random());
        }
    });}

要让 bigpipe 正常运行,需要前端引入 bigpipe.js, 另外 pagelet 为 quickling
模式,是不会自动加载的,需要用户主动去调用 BigPipe.load 方法,才会加载并渲染。

更多信息请查看 yog-bigpipe;

[](https://github.com/fex-

team/yogurt#%E5%90%8E%E7%AB%AF%E7%BB%93%E5%90%88)后端结合

yogurt 负责前端部分的工作,将会产出以下文件。后端只需提供 controller 和 model, controller 中把 model 与 tpl
关联,然后选择渲染模板文件。 关于后端框架部分,请查看 yog

├── config
│   └── example-map.json
├── public
│   └── example
│       ... 更多静态资源文件
└── views
    └── example
        ... 更多模板文件

baidu yogurt <a href="https://github.com/fex-team/yogurt#page-%E7%9B%AE%E5%BD%95"></a>page 目录<a href="https://github.com/fex-team/yogurt#static-%E7%9B%AE%E5%BD%95"></a>st 官网

https://github.com/fex-team/yogurt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


MuPlayer 是一款跨平台、轻量级的音频播放解决方案,是百度@音乐前端团队开发维护的浏览端音频播放内核,它基于HTML5
OS FLV 是一个 开源和可嵌入网页的flv播放器。 这个播放器拥有大量的选项可以通过嵌入代码进行设置.
DewPlayer音乐播放器,样式很简单,而且很实用.播放器可以根据自己的喜好改变颜色,也算比较个性化吧.但唯一的不足就是只支持MP3格式的音乐。
JW FLV MEDIA PLAYER是一个开源的在网页上使用的Flash视频、音频以及图片播放器,支持 Sliverlight
Speakker 是一个基于 Web 浏览器的音乐播放器,只提供很多高级播放功能包括播放列表管理和分享。
Player Framework 是一个开源的支持 HTML5 的视频播放器框架,同时也支持 Silverlight 和 Windows Phone
Sewise Player是一款专业的免费网页视频、流播放器,它功能强大,体积小,跨平台,使用方便简洁、随心所欲:
SoundManager 2 利用 HTML5 和 Flash 技术提供了稳定和阔平台的音乐播放功能,只有 10K 的 JS 包。
xPlayer v1.0 特性: 文件大小 9.78kb; 可以自定义皮肤; 3.支持 http 和 rtmp 视频; 4.音量调节,全屏播放,拖拽播放;
XPlayer 豆瓣音乐播放器 特点: 1.自动侦测Douban网页的歌曲 2.Douban网页关闭,歌曲能够继续播放
歌词 插件 最新更新,扩展性能稍微有点提升了, 不多说了,更多敬请查看首页http://luochunzong.sinaapp.com/?p=84
ABPlayerHTML5是一个在HTML5下的弹幕播放器(同步显示视频于评论)实现。类似功能的播放器可以参考基于Flash的MukioPlayer和PADPlayer。
AudioPlayer.js 是一个 jQuery 的插件,实现了 HTML5 的音乐播放器,无需任何图片,实现了响应式布局,支持触摸操作。
替换中国大陆主流视频网站的 Flash 播放器为 HTML5 播放器 使用 Mac 的同学都可能碰到过在线看视频引起机子风扇狂转、机身发烫等情况,这是因为 Flash 占用了过多系统资源的缘故。
AetherPlayer 是一个类CD的轻量HTML5播放器,特别适合博客及个人站点使用。它漂亮得不像……咳,这边吹牛的话就不说了。
专注、极致、智慧,国内外为数不多不依赖开源框架、跨平台(windows/android/iOS)、公网推送(支持rtmp)-播放(支持rtmp/rtsp)业界真正靠谱 的超低延迟。
node-kugou-client 是 Node.js 酷狗客户端。 安装 npm install node-kugou-client 使用 var kugou = require(\"node-kugou-client\");
Youku HTML5 播放器扩展 —— 告别 flash 和广告 关于官方内测 html5 播放器 Firefox ( xpi 直接安装) ( firefox 50.0+)
Chimee 由奇舞团研制的 h5 播放器,它支持 mp4、m3u8、flv 等多种格式。通过插件式开发,能满足业务方快速迭代、灰度发布等要求。让开发者能够轻松快捷地完成视频场景的开发。
OneVideo是一款基于OneBase+UniApp开发的小视频播放移动应用。