Ractive 簡介

jopen 9年前發布 | 10K 次閱讀 Ractive JavaScript開發

 

最近在寫一個微信編輯器,然后已經在編輯器那一塊選定了CKEditor,想想覺得UEditor雖然不錯,但是似乎已經很不更新了。

想想覺得編輯器這種東西,對于一般人來說還算挺常用的,但想著是不是可以作為一個LTS??然后發現給CKEditor寫寫plugin,還是蠻方便的。

技術選型

選用怎樣的前端框架是一個有趣的話題,我需要一個數據綁定和模板。首先,我排除了React這個框架,我覺得他的模板會給我帶來一堆麻煩事。 Angluar是一個不錯的選擇,但是考慮Angluar 2.0就放棄了,Backbone也用了那么久。Knockout.js又進入了我的視野,但是后來我發現數據綁定到模板有點難。最后選了 Ractive,后來發現果然上手很輕松。

補充一句,這個框架比React誕生早了一個月,還是以DOM為核心。Ractive自稱是一個模板驅動UI的庫,在Github上說是下一代的DOM操作。因為Virtual Dom的出現,這個框架并沒有那么流行。

Ractive是什么?

起先,這個框架是在衛報創建的用于產生新聞的應用程序 。有很多工具可以幫助我們構建Web應用程序 ,但是很少會考慮基本的問題:HTML,一個優秀的靜態模板,但是并沒有為交互設計。Ractive可以將一個模板插到DOM中,并且可以動態的改變它。

下面是一個簡單的Hello,World。

  <script id='template' type='text/ractive'>
  <p>Hello, {{name}}!</p>
  </script>
  <script>
  var ractive = new Ractive({
    template: '#template',
    data: { name: 'world' }
  });
  </script>

這個Hello,World和一般的MVC框架并沒有太大區別,甚至和我們用的Backbone很像。

然后,讓我們來看一個事件的例子:

listView = new Ractive({
  el: 'sandboxTitle',
  template: listTemplate,
  data: {color: config.defaultColor, 'fontSize': config.defaultFontSize}
      });
      listView.on('changeColor', function (args) {
  listView.set('color', args.color);
      });

這是的on,需要你在某個地方Fire:

titleView.fire('changeColor', {color: color.toHexString()});

接著,問題來了,這和我們jQuery的on,或者React的handleClick似乎沒有太大的區別。接著Component來了:

     var Grid = Ractive.extend({
        isolated: false,
        template: parasTemplate,
        data: {
        }
      });

      var dataValue = 5;
      var category = 'category-3';

      var color = config.defaultColor;

      parasView = new Ractive({
        el: 'parasSanbox',
        template: '<Grid Style="{{styles}}" />',
        components: {Grid: Grid},
        data: {
          styles: [
            {section_style: 'border: 2px dotted #4caf50; margin: 8px 14px; padding: 10px; border-radius: 14px;', p_style: 'font-size: 14px;', color: color,  data_value: dataValue, category: category},
          ]
        }
      });

      parasView.on('changeColor', function(args) {
        parasView.findComponent('Grid').set('Style.*.color', args.color);
      });

上面是在 https://github.com/phodal/congee 中用到的多個模板的View,他們用了同一個component。

好吧,說實在的它并沒有什么神奇之處。這些功能React都有了,而且它還沒有Angluar強大。但是,我們可以使用模板,HTML模板。而這是我們最需要的場景,而且不需要拋棄現有的代碼。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!