美文网首页
如何精简代码-以svg为例

如何精简代码-以svg为例

作者: TROPICALlll | 来源:发表于2018-07-11 18:17 被阅读0次

这段时间在学习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学习笔记
    只有理解了每行代码代表什么意义,精简代码才会更加得心应手。删除起来也会更加胸有成竹!

相关文章

网友评论

      本文标题:如何精简代码-以svg为例

      本文链接:https://www.haomeiwen.com/subject/aczhpftx.html