如何精简代码-以svg为例

这段时间在学习HTML、CSS和Markdown语法中,最头疼的莫过于看到一大堆接连不断的代码。带着“要是能够再少一点就好了”的想法,通过课本学习和网页浏览收获了精简代码的一些简单做法。

以SVG为例

  • 以在Inkscape中绘制导出的一个普通矩形为例。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="120mm"
   height="90mm"
   viewBox="0 0 120 90"
   version="1.1"
   id="svg8"
   inkscape:version="0.92.3 (2405546, 2018-03-11)"
   sodipodi:docname="fourrect.svg">
  <defs
     id="defs2" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="1.4"
     inkscape:cx="226.09147"
     inkscape:cy="171.96145"
     inkscape:document-units="mm"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:window-width="1920"
     inkscape:window-height="991"
     inkscape:window-x="-11"
     inkscape:window-y="-11"
     inkscape:window-maximized="1" />
  <metadata
     id="metadata5">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(0,-207)">
    <g
       transform="matrix(0.71523179,0,0,0.74285713,-26.506178,24.079562)"
       id="layer1-4"
       inkscape:label="Layer 1">
      <g
         inkscape:label="Layer 1"
         id="layer1-7"
         transform="translate(29.291804,15.615445)">
        <rect
           style="opacity:1;fill:#3000b4;fill-opacity:1;stroke-width:0.26458332"
           id="rect1935"
           width="28.159225"
           height="26.458332"
           x="22.300594"
           y="242.38243" />
      </g>
    </g>
</svg>
  1. SVG使用版本以及文件是否“独立”
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

第一行代码
version="1.0"指使用的SVG版本
standalone="no"规定这个 SVG 文件是否是“独立的”,还是有引用外部文件。standalone="no" 意味着 SVG 文件不是独立的,会引用外部文件。
经过删除和检查发现,删除第一行代码并不影响网页显示。而第二行作为注释标记文字,只是方便后端人员写代码时查看,对前端网页的展示并没有任何显示和帮助。均删除。

  1. 命名空间
    xmlns="http://www.w3.org/2000/svg"大概长这样的以“xmlns”开头的代码。
  • 命名空间主要只是用于生成SVG的程序中,但到Web网页时他们并不需要被表现出来,因而为了节省代码空间可以进行删除。
  1. Inkscape画布代码(这一步限于Inkscape)
    sodipodi:namedview这个大标题下的代码,主要是Inkscape中图形下的画布代码,其颜色、视口大小、高宽和坐标系等。如果使用导出的SVG图形时并不需要改变画布大小,那么这一整层代码也可以爽快的删除!

删除结果

让我们来看看经过删除我们最终的代码剩下多少!

<svg
   width="120mm"
   height="90mm"
   viewBox="0 0 120 90"
   version="1.1"
   id="svg8"
   inkscape:version="0.92.3 (2405546, 2018-03-11)"
   sodipodi:docname="fourrect.svg">
  <defs
     id="defs2" />
  <metadata
     id="metadata5">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(0,-207)">
    <g
       transform="matrix(0.71523179,0,0,0.74285713,-26.506178,24.079562)"
       id="layer1-4"
       inkscape:label="Layer 1">
      <g
         inkscape:label="Layer 1"
         id="layer1-7"
         transform="translate(29.291804,15.615445)">
        <rect
           style="opacity:1;fill:#3000b4;fill-opacity:1;stroke-width:0.26458332"
           id="rect1935"
           width="28.159225"
           height="26.458332"
           x="22.300594"
           y="242.38243" />
      </g>
    </g>
</svg>

好吧,虽然还是挺长,但确实肉眼可见的减少了蛮多的对吧!
其实除了上述提到的可删除代码,还有未被展示但也可删除的。比如title和desc标签,均是用于后端代码文档的可读性,方便写代码时查看和分类,因此到最后快要完成时这些都可以被删除。

几个精简做法

  1. 多使用外联文件
    在HTML文件中需要的地方链接外联文件,突出重点又精简明朗。
  2. 多使用CSS来规定所需样式。
    假如直接在HTML中编辑样式,那会导致开头一堆样式代码,页面在加载处正文内容前需要先走一遍样式代码。实在拖沓!
  3. 少使用注释。
    在完全完成代码编辑后把他们删掉。
  4. 少使用加粗斜体等字体样式
    一篇文章中多次出现字体加粗或斜体的样式只会造成页面加载负担。只在确实需要的重点字眼处添加。这样做也会更突出文章核心主题。
  • 最后附上我的SVG学习笔记整理。
    SVG学习笔记
    只有理解了每行代码代表什么意义,精简代码才会更加得心应手。删除起来也会更加胸有成竹!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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