weex学习笔记<三> : 安装weex的编辑工具---subline Text3

weex文件的后缀名是.we,如果使用Xcode编辑weex,没有格式也没有高亮和提示,我们需要使用一个编辑工具来快速的编写weex的代码.我们可以用subline Text 来打开和编辑,但是我们先需要做下配置,让其支持.we文件.

  • 安装subline Text3

    首先下载subline Text3,可以直接去官网下载,我用的是破解版.请自行搜索安装.

  • 添加高亮脚本,导航栏里选择Tools->Developer->New Syntax


    Paste_Image.png
  • 把下面代码粘贴进去,并覆盖原有的

    %YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: we Component
file_extensions:
  - we
scope: text.html.we
contexts:
  main:
    - include: we-interpolations
    - match: '(<)([a-zA-Z0-9:-]++)(?=[^>]*></\2>)'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.html
      push:
        - meta_scope: meta.tag.any.html
        - match: (>)(<)(/)(\2)(>)
          captures:
            1: punctuation.definition.tag.end.html
            2: punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html
            3: punctuation.definition.tag.begin.html
            4: entity.name.tag.html
            5: punctuation.definition.tag.end.html
          pop: true
        - include: tag-stuff
    - match: (<\?)(xml)
      captures:
        1: punctuation.definition.tag.html
        2: entity.name.tag.xml.html
      push:
        - meta_scope: meta.tag.preprocessor.xml.html
        - match: (\?>)
          captures:
            1: punctuation.definition.tag.html
            2: entity.name.tag.xml.html
          pop: true
        - include: tag-generic-attribute
        - include: string-double-quoted
        - include: string-single-quoted
    - match: <!--
      captures:
        0: punctuation.definition.comment.html
      push:
        - meta_scope: comment.block.html
        - match: '--\s*>'
          captures:
            0: punctuation.definition.comment.html
          pop: true
        - match: "--"
          scope: invalid.illegal.bad-comments-or-CDATA.html
    - match: <!
      captures:
        0: punctuation.definition.tag.html
      push:
        - meta_scope: meta.tag.sgml.html
        - match: ">"
          captures:
            0: punctuation.definition.tag.html
          pop: true
        - match: (?i:DOCTYPE)
          captures:
            1: entity.name.tag.doctype.html
          push:
            - meta_scope: meta.tag.sgml.doctype.html
            - match: (?=>)
              captures:
                1: entity.name.tag.doctype.html
              pop: true
            - match: '"[^">]*"'
              scope: string.quoted.double.doctype.identifiers-and-DTDs.html
        - match: '\[CDATA\['
          push:
            - meta_scope: constant.other.inline-data.html
            - match: "]](?=>)"
              pop: true
        - match: (\s*)(?!--|>)\S(\s*)
          scope: invalid.illegal.bad-comments-or-CDATA.html
    - match: '(?:^\s+)?(<)((?i:template))\b(?=[^>]*lang="jade(?:\?[^"]*)?")'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.style.html
        3: punctuation.definition.tag.html
      push:
        - meta_scope: text.jade.embedded.html
        - match: (</)((?i:template))(>)(?:\s*\n)?
          captures:
            1: punctuation.definition.tag.begin.html
            2: entity.name.tag.style.html
            3: punctuation.definition.tag.html
          pop: true
        - include: tag-stuff
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          push:
            - match: (?=</(?i:template))
              pop: true
            - include: scope:text.jade
    - match: '(?:^\s+)?(<)((?i:template))\b(?=[^>]*lang="pug(?:\?[^"]*)?")'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.style.html
        3: punctuation.definition.tag.html
      push:
        - meta_scope: text.pug.embedded.html
        - match: (</)((?i:template))(>)(?:\s*\n)?
          captures:
            1: punctuation.definition.tag.begin.html
            2: entity.name.tag.style.html
            3: punctuation.definition.tag.html
          pop: true
        - include: tag-stuff
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          push:
            - match: (?=</(?i:template))
              pop: true
            - include: scope:text.pug
    - match: '(?:^\s+)?(<)((?i:style))\b(?=[^>]*lang="stylus(?:\?[^"]*)?")'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.style.html
        3: punctuation.definition.tag.html
      push:
        - meta_scope: source.stylus.embedded.html
        - match: (</)((?i:style))(>)(?:\s*\n)?
          captures:
            1: punctuation.definition.tag.begin.html
            2: entity.name.tag.style.html
            3: punctuation.definition.tag.html
          pop: true
        - include: tag-stuff
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          push:
            - match: (?=</(?i:style))
              pop: true
            - include: scope:source.stylus
    - match: '(?:^\s+)?(<)((?i:style))\b(?=[^>]*lang="(?:s(a|c)ss)(?:\?[^"]*)?")'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.style.html
        3: punctuation.definition.tag.html
      push:
        - meta_scope: source.sass.embedded.html
        - match: (</)((?i:style))(>)(?:\s*\n)?
          captures:
            1: punctuation.definition.tag.begin.html
            2: entity.name.tag.style.html
            3: punctuation.definition.tag.html
          pop: true
        - include: tag-stuff
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          push:
            - match: (?=</(?i:style))
              pop: true
            - include: scope:source.sass
    - match: '(?:^\s+)?(<)((?i:style))\b(?=[^>]*lang="less(?:\?[^"]*)?")'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.style.html
        3: punctuation.definition.tag.html
      push:
        - meta_scope: source.less.embedded.html
        - match: (</)((?i:style))(>)(?:\s*\n)?
          captures:
            1: punctuation.definition.tag.begin.html
            2: entity.name.tag.style.html
            3: punctuation.definition.tag.html
          pop: true
        - include: tag-stuff
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          push:
            - match: (?=</(?i:style))
              pop: true
            - include: scope:source.less
    - match: '(?:^\s+)?(<)((?i:style))\b(?![^>]*/>)'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.style.html
        3: punctuation.definition.tag.html
      push:
        - meta_scope: source.css.embedded.html
        - match: (</)((?i:style))(>)(?:\s*\n)?
          captures:
            1: punctuation.definition.tag.begin.html
            2: entity.name.tag.style.html
            3: punctuation.definition.tag.html
          pop: true
        - include: tag-stuff
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          push:
            - match: (?=</(?i:style))
              pop: true
            - include: scope:source.css
    - match: '(?:^\s+)?(<)((?i:script))\b(?=[^>]*lang="coffee(?:\?[^"]*)?")'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.script.html
      push:
        - meta_scope: source.coffee.embedded.html
        - match: (?<=</(script|SCRIPT))(>)(?:\s*\n)?
          captures:
            2: punctuation.definition.tag.html
          pop: true
        - include: tag-stuff
        - match: (?<!</(?:script|SCRIPT))(>)
          captures:
            1: punctuation.definition.tag.begin.html
            2: entity.name.tag.script.html
          push:
            - match: (</)((?i:script))
              captures:
                1: punctuation.definition.tag.begin.html
                2: entity.name.tag.script.html
              pop: true
            - include: scope:source.coffee
    - match: '(?:^\s+)?(<)((?i:script))\b(?![^>]*/>)'
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.script.html
      push:
        - meta_scope: source.js.embedded.html
        - match: (?<=</(script|SCRIPT))(>)(?:\s*\n)?
          captures:
            2: punctuation.definition.tag.html
          pop: true
        - include: tag-stuff
        - match: (?<!</(?:script|SCRIPT))(>)
          captures:
            1: punctuation.definition.tag.begin.html
            2: entity.name.tag.script.html
          push:
            - match: (</)((?i:script))
              captures:
                1: punctuation.definition.tag.begin.html
                2: entity.name.tag.script.html
              pop: true
            - match: (//).*?((?=</script)|$\n?)
              scope: comment.line.double-slash.js
              captures:
                1: punctuation.definition.comment.js
            - match: /\*
              captures:
                0: punctuation.definition.comment.js
              push:
                - meta_scope: comment.block.js
                - match: \*/|(?=</script)
                  captures:
                    0: punctuation.definition.comment.js
                  pop: true
            - include: scope:source.js
    - match: (</?)((?i:body|head|html)\b)
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.structure.any.html
      push:
        - meta_scope: meta.tag.structure.any.html
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          pop: true
        - include: tag-stuff
    - match: (</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\b)
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.block.any.html
      push:
        - meta_scope: meta.tag.block.any.html
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          pop: true
        - include: tag-stuff
    - match: (</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\b)
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.inline.any.html
      push:
        - meta_scope: meta.tag.inline.any.html
        - match: "((?: ?/)?>)"
          captures:
            1: punctuation.definition.tag.end.html
          pop: true
        - include: tag-stuff
    - match: "(</?)([a-zA-Z0-9:-]+)"
      captures:
        1: punctuation.definition.tag.begin.html
        2: entity.name.tag.other.html
      push:
        - meta_scope: meta.tag.other.html
        - match: (>)
          captures:
            1: punctuation.definition.tag.end.html
          pop: true
        - include: tag-stuff
    - include: entities
    - match: <>
      scope: invalid.illegal.incomplete.html
    - match: <
      scope: invalid.illegal.bad-angle-bracket.html
  entities:
    - match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)"
      scope: constant.character.entity.html
      captures:
        1: punctuation.definition.entity.html
        3: punctuation.definition.entity.html
    - match: "&"
      scope: invalid.illegal.bad-ampersand.html
  string-double-quoted:
    - match: '"'
      captures:
        0: punctuation.definition.string.begin.html
      push:
        - meta_scope: string.quoted.double.html
        - match: '"'
          captures:
            0: punctuation.definition.string.end.html
          pop: true
        - include: we-interpolations
        - include: entities
  string-single-quoted:
    - match: "'"
      captures:
        0: punctuation.definition.string.begin.html
      push:
        - meta_scope: string.quoted.single.html
        - match: "'"
          captures:
            0: punctuation.definition.string.end.html
          pop: true
        - include: we-interpolations
        - include: entities
  tag-generic-attribute:
    - match: '\b([a-zA-Z\-:]+)'
      scope: entity.other.attribute-name.html
  tag-id-attribute:
    - match: \b(id)\b\s*(=)
      captures:
        1: entity.other.attribute-name.id.html
        2: punctuation.separator.key-value.html
      push:
        - meta_scope: meta.attribute-with-value.id.html
        - match: (?<='|")
          captures:
            1: entity.other.attribute-name.id.html
            2: punctuation.separator.key-value.html
          pop: true
        - match: '"'
          captures:
            0: punctuation.definition.string.begin.html
          push:
            - meta_scope: string.quoted.double.html
            - meta_content_scope: meta.toc-list.id.html
            - match: '"'
              captures:
                0: punctuation.definition.string.end.html
              pop: true
            - include: we-interpolations
            - include: entities
        - match: "'"
          captures:
            0: punctuation.definition.string.begin.html
          push:
            - meta_scope: string.quoted.single.html
            - meta_content_scope: meta.toc-list.id.html
            - match: "'"
              captures:
                0: punctuation.definition.string.end.html
              pop: true
            - include: we-interpolations
            - include: entities
  tag-stuff:
    - include: we-directives
    - include: tag-id-attribute
    - include: tag-generic-attribute
    - include: string-double-quoted
    - include: string-single-quoted
  we-directives:
    - match: '(?:\b(v-)|(:|@))([a-zA-Z\-]+)(?:\:([a-zA-Z\-]+))?(?:\.([a-zA-Z\-]+))*\s*(=)'
      captures:
        1: entity.other.attribute-name.html
        2: punctuation.separator.key-value.html
        3: entity.other.attribute-name.html
        4: entity.other.attribute-name.html
        5: entity.other.attribute-name.html
        6: punctuation.separator.key-value.html
      push:
        - meta_scope: meta.directive.we
        - match: (?<='|")
          captures:
            1: entity.other.attribute-name.html
            2: punctuation.separator.key-value.html
            3: entity.other.attribute-name.html
            4: entity.other.attribute-name.html
            5: entity.other.attribute-name.html
            6: punctuation.separator.key-value.html
          pop: true
        - match: '"'
          captures:
            0: punctuation.definition.string.begin.html
          push:
            - meta_scope: source.directive.we
            - match: '"'
              captures:
                0: punctuation.definition.string.end.html
              pop: true
            - include: scope:source.js
        - match: "'"
          captures:
            0: punctuation.definition.string.begin.html
          push:
            - meta_scope: source.directive.we
            - match: "'"
              captures:
                0: punctuation.definition.string.end.html
              pop: true
            - include: scope:source.js
  we-interpolations:
    - match: '\{\{\{?'
      captures:
        0: punctuation.definition.tag.begin.html
      push:
        - meta_scope: expression.embbeded.we
        - match: '\}\}\}?'
          captures:
            0: punctuation.definition.tag.end.html
          pop: true
        - include: scope:source.js


然后 按 coomand + s 保存,保存文件名称必须是:Plain we.sublime-syntax,否则不能使用

  • 开启weex语法高亮,选择view ---->syntax---->最下面有个we Component

    Paste_Image.png
  • 然后就大功告成,测试一下效果:
    新建一个文件,后缀名为.we,用subline 打开,粘贴以下代码

    <template>
      <div>
        <text>The time is {{datetime}}</text>
        <text>{{title}}</text>
        <text>{{getTitle()}}</text>
      </div>
    </template>
    <script>
      module.exports = {
        data: {
          title: 'Alibaba',
          datetime: null
        },
        methods: {
          getTitle: function () {
            return 'Weex Team'
          }
        },
        created: function() {
          this.datetime = new Date().toLocaleString()
          this.title = '123'
        }
      }
    </script>
  

如果颜色是五颜六色的那么基本就成功了.如下图所示:

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容