<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>玖爱OP的个人博客</title>
  <icon>https://www.gravatar.com/avatar/7d109f2dcd709f4d9bffc6399c72df1b</icon>
  <subtitle>博行天下_玖爱OP的博客</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="/"/>
  <updated>2021-09-01T08:05:24.000Z</updated>
  <id>/</id>
  
  <author>
    <name>玖爱OP</name>
    <email>jlii.net@88.com</email>
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>上海2000坐标转换系统</title>
    <link href="https://jiuaiop.gitee.io/posts/5c283250-0afb-11ec-b838-79832a929e5e/"/>
    <id>https://jiuaiop.gitee.io/posts/5c283250-0afb-11ec-b838-79832a929e5e/</id>
    <published>2021-09-01T08:05:24.000Z</published>
    <updated>2021-09-01T08:05:24.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="首页"><a href="#首页" class="headerlink" title="首页"></a>首页</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901160443.png"></p><h2 id="启用技术指南"><a href="#启用技术指南" class="headerlink" title="启用技术指南"></a>启用技术指南</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901160659.png"></p><h2 id="认识2000坐标系"><a href="#认识2000坐标系" class="headerlink" title="认识2000坐标系"></a>认识2000坐标系</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901160825.png"></p><h2 id="启用六十问"><a href="#启用六十问" class="headerlink" title="启用六十问"></a>启用六十问</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901160913.png"></p><h2 id="六十问回答"><a href="#六十问回答" class="headerlink" title="六十问回答"></a>六十问回答</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901161016.png"></p><h2 id="使用步骤和注意事项"><a href="#使用步骤和注意事项" class="headerlink" title="使用步骤和注意事项"></a>使用步骤和注意事项</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901161050.png"></p><h2 id="常见问题解决"><a href="#常见问题解决" class="headerlink" title="常见问题解决"></a>常见问题解决</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901161124.png"></p><h2 id="任务列表"><a href="#任务列表" class="headerlink" title="任务列表"></a>任务列表</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901161217.png"></p><h2 id="提交任务"><a href="#提交任务" class="headerlink" title="提交任务"></a>提交任务</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901161221.png"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="https://jiuaiop.gitee.io/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="hexo" scheme="https://jiuaiop.gitee.io/tags/hexo/"/>
    
    <category term="master" scheme="https://jiuaiop.gitee.io/tags/master/"/>
    
    <category term="截图" scheme="https://jiuaiop.gitee.io/tags/%E6%88%AA%E5%9B%BE/"/>
    
  </entry>
  
  <entry>
    <title>空间数据集成管理平台截图</title>
    <link href="https://jiuaiop.gitee.io/posts/f86d67a0-0ae9-11ec-8154-cfebb3b24829/"/>
    <id>https://jiuaiop.gitee.io/posts/f86d67a0-0ae9-11ec-8154-cfebb3b24829/</id>
    <published>2021-09-01T06:00:55.000Z</published>
    <updated>2021-09-01T06:00:55.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="dev-base分支"><a href="#dev-base分支" class="headerlink" title="dev-base分支"></a>dev-base分支</h1><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901154443.png"></p><h1 id="分支管理"><a href="#分支管理" class="headerlink" title="分支管理"></a>分支管理</h1><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901154706.png"></p><h1 id="dev-changchun分支"><a href="#dev-changchun分支" class="headerlink" title="dev-changchun分支"></a>dev-changchun分支</h1><h2 id="登录"><a href="#登录" class="headerlink" title="登录"></a>登录</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901140642.png" alt="登录页"></p><h2 id="首页"><a href="#首页" class="headerlink" title="首页"></a>首页</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901141650.png" alt="首页"></p><h2 id="资源目录"><a href="#资源目录" class="headerlink" title="资源目录"></a>资源目录</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901141851.png" alt="资源目录"></p><h2 id="仪表盘列表"><a href="#仪表盘列表" class="headerlink" title="仪表盘列表"></a>仪表盘列表</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901142004.png" alt="仪表盘列表"></p><h2 id="仪表盘详情"><a href="#仪表盘详情" class="headerlink" title="仪表盘详情"></a>仪表盘详情</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901142223.png" alt="仪表盘详情"></p><h2 id="数据出入库"><a href="#数据出入库" class="headerlink" title="数据出入库"></a>数据出入库</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901142322.png" alt="数据出入库"></p><h2 id="资源项详情"><a href="#资源项详情" class="headerlink" title="资源项详情"></a>资源项详情</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901142350.png" alt="资源项详情"></p><h2 id="地图预览"><a href="#地图预览" class="headerlink" title="地图预览"></a>地图预览</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901143741.png" alt="地图预览"></p><h2 id="现势库和历史库对比"><a href="#现势库和历史库对比" class="headerlink" title="现势库和历史库对比"></a>现势库和历史库对比</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901144047.png" alt="现势库和历史库对比"></p><h2 id="地图对比"><a href="#地图对比" class="headerlink" title="地图对比"></a>地图对比</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901144437.png" alt="地图对比"></p><h2 id="任务状态"><a href="#任务状态" class="headerlink" title="任务状态"></a>任务状态</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901144651.png" alt="任务状态"></p><h2 id="数据统计"><a href="#数据统计" class="headerlink" title="数据统计"></a>数据统计</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901145732.png" alt="数据统计"></p><h2 id="方案管理"><a href="#方案管理" class="headerlink" title="方案管理"></a>方案管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901145827.png" alt="方案列表"></p><h2 id="创建方案"><a href="#创建方案" class="headerlink" title="创建方案"></a>创建方案</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901145915.png" alt="创建方案"></p><h2 id="方案添加服务-模板"><a href="#方案添加服务-模板" class="headerlink" title="方案添加服务/模板"></a>方案添加服务/模板</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901150007.png" alt="方案添加模板"></p><h2 id="方案服务列表"><a href="#方案服务列表" class="headerlink" title="方案服务列表"></a>方案服务列表</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901150131.png" alt="方案服务列表"></p><h2 id="方案编辑"><a href="#方案编辑" class="headerlink" title="方案编辑"></a>方案编辑</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901150302.png" alt="方案编辑"></p><h2 id="方案服务编辑"><a href="#方案服务编辑" class="headerlink" title="方案服务编辑"></a>方案服务编辑</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901150404.png" alt="方案服务编辑"></p><h2 id="创建任务-提交方案"><a href="#创建任务-提交方案" class="headerlink" title="创建任务/提交方案"></a>创建任务/提交方案</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901150741.png" alt="创建任务"></p><h2 id="提交方案字典类型参数填写"><a href="#提交方案字典类型参数填写" class="headerlink" title="提交方案字典类型参数填写"></a>提交方案字典类型参数填写</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901150852.png" alt="提交方案字典类型参数填写"></p><h2 id="提交方案文件类型参数填写"><a href="#提交方案文件类型参数填写" class="headerlink" title="提交方案文件类型参数填写"></a>提交方案文件类型参数填写</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901151056.png" alt="提交方案文件类型参数填写"></p><h2 id="提交方案文件类型参数临时上传"><a href="#提交方案文件类型参数临时上传" class="headerlink" title="提交方案文件类型参数临时上传"></a>提交方案文件类型参数临时上传</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901151154.png" alt="提交方案文件类型参数临时上传"></p><h2 id="计划任务列表"><a href="#计划任务列表" class="headerlink" title="计划任务列表"></a>计划任务列表</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901150449.png" alt="计划任务列表"></p><h2 id="创建计划任务"><a href="#创建计划任务" class="headerlink" title="创建计划任务"></a>创建计划任务</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901150555.png" alt="创建计划任务"></p><h2 id="流程列表"><a href="#流程列表" class="headerlink" title="流程列表"></a>流程列表</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901151510.png" alt="流程列表"></p><h2 id="创建流程"><a href="#创建流程" class="headerlink" title="创建流程"></a>创建流程</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901151546.png" alt="创建流程"></p><h2 id="流程定义"><a href="#流程定义" class="headerlink" title="流程定义"></a>流程定义</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901151635.png" alt="流程定义"></p><h2 id="流程步骤创建"><a href="#流程步骤创建" class="headerlink" title="流程步骤创建"></a>流程步骤创建</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901151721.png" alt="流程步骤创建"></p><h2 id="流程步骤挂载方案"><a href="#流程步骤挂载方案" class="headerlink" title="流程步骤挂载方案"></a>流程步骤挂载方案</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901151755.png" alt="流程步骤挂载方案"></p><h2 id="执行流程"><a href="#执行流程" class="headerlink" title="执行流程"></a>执行流程</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901151957.png" alt="执行流程"></p><h2 id="流程状态列表"><a href="#流程状态列表" class="headerlink" title="流程状态列表"></a>流程状态列表</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152148.png" alt="流程状态列表"></p><h2 id="流程状态详情"><a href="#流程状态详情" class="headerlink" title="流程状态详情"></a>流程状态详情</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152235.png" alt="流程状态详情"></p><h2 id="角色列表"><a href="#角色列表" class="headerlink" title="角色列表"></a>角色列表</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152304.png"></p><h2 id="角色接口授权"><a href="#角色接口授权" class="headerlink" title="角色接口授权"></a>角色接口授权</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152331.png"></p><h2 id="角色方案授权"><a href="#角色方案授权" class="headerlink" title="角色方案授权"></a>角色方案授权</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152403.png"></p><h2 id="用户管理"><a href="#用户管理" class="headerlink" title="用户管理"></a>用户管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152441.png"></p><h2 id="资源目录管理"><a href="#资源目录管理" class="headerlink" title="资源目录管理"></a>资源目录管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152613.png"></p><h2 id="资源目录节点创建"><a href="#资源目录节点创建" class="headerlink" title="资源目录节点创建"></a>资源目录节点创建</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152652.png"><br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152720.png"></p><h2 id="资源目录资源项编辑"><a href="#资源目录资源项编辑" class="headerlink" title="资源目录资源项编辑"></a>资源目录资源项编辑</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152810.png"></p><h2 id="资源项元数据录入"><a href="#资源项元数据录入" class="headerlink" title="资源项元数据录入"></a>资源项元数据录入</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152849.png"></p><h2 id="用户目录"><a href="#用户目录" class="headerlink" title="用户目录"></a>用户目录</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901152958.png"></p><h2 id="上传文件"><a href="#上传文件" class="headerlink" title="上传文件"></a>上传文件</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153026.png"></p><h2 id="文件目录"><a href="#文件目录" class="headerlink" title="文件目录"></a>文件目录</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153049.png"></p><h2 id="文件目录详情"><a href="#文件目录详情" class="headerlink" title="文件目录详情"></a>文件目录详情</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153126.png"></p><h2 id="数据库连接"><a href="#数据库连接" class="headerlink" title="数据库连接"></a>数据库连接</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153207.png"></p><h2 id="地图服务"><a href="#地图服务" class="headerlink" title="地图服务"></a>地图服务</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153245.png"></p><h2 id="用户字典"><a href="#用户字典" class="headerlink" title="用户字典"></a>用户字典</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153321.png"></p><h2 id="fmeserver服务器管理"><a href="#fmeserver服务器管理" class="headerlink" title="fmeserver服务器管理"></a>fmeserver服务器管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153501.png"></p><h2 id="系统迁移"><a href="#系统迁移" class="headerlink" title="系统迁移"></a>系统迁移</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153554.png"></p><h2 id="元数据结构定义"><a href="#元数据结构定义" class="headerlink" title="元数据结构定义"></a>元数据结构定义</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153623.png"></p><h2 id="日志管理"><a href="#日志管理" class="headerlink" title="日志管理"></a>日志管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153658.png"></p><h2 id="图表管理"><a href="#图表管理" class="headerlink" title="图表管理"></a>图表管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153723.png"></p><h2 id="仪表盘管理"><a href="#仪表盘管理" class="headerlink" title="仪表盘管理"></a>仪表盘管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153751.png"></p><h2 id="仪表盘设计"><a href="#仪表盘设计" class="headerlink" title="仪表盘设计"></a>仪表盘设计</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153840.png"></p><h2 id="仪表盘图表挂载"><a href="#仪表盘图表挂载" class="headerlink" title="仪表盘图表挂载"></a>仪表盘图表挂载</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153910.png"></p><h2 id="令牌管理"><a href="#令牌管理" class="headerlink" title="令牌管理"></a>令牌管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901153939.png"></p><h2 id="许可管理"><a href="#许可管理" class="headerlink" title="许可管理"></a>许可管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901154001.png"></p><h2 id="接口管理"><a href="#接口管理" class="headerlink" title="接口管理"></a>接口管理</h2><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/20210901154027.png"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="hexo" scheme="https://jiuaiop.gitee.io/tags/hexo/"/>
    
    <category term="master" scheme="https://jiuaiop.gitee.io/tags/master/"/>
    
    <category term="截图" scheme="https://jiuaiop.gitee.io/tags/%E6%88%AA%E5%9B%BE/"/>
    
  </entry>
  
  <entry>
    <title>Hexo使用hexo-admin插件管理文章</title>
    <link href="https://jiuaiop.gitee.io/posts/e221c1b0-f732-11ea-b743-5f643a35642e/"/>
    <id>https://jiuaiop.gitee.io/posts/e221c1b0-f732-11ea-b743-5f643a35642e/</id>
    <published>2021-09-01T05:56:36.549Z</published>
    <updated>2021-09-01T05:56:36.549Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><p>参考：<a href="https://blog.csdn.net/nineya_com/article/details/103380243">https://blog.csdn.net/nineya_com/article/details/103380243</a><br>这里是文章内容</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>Arcgis学习之路(三)之esri/wigets的使用</title>
    <link href="https://jiuaiop.gitee.io/posts/d53d8650-4b2e-11eb-8749-916705835835a228/"/>
    <id>https://jiuaiop.gitee.io/posts/d53d8650-4b2e-11eb-8749-916705835835a228/</id>
    <published>2021-09-01T05:56:36.545Z</published>
    <updated>2020-12-29T08:56:29.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="esri-widgets的使用"><a href="#esri-widgets的使用" class="headerlink" title="esri/widgets的使用"></a>esri/widgets的使用</h1><p>本文主要讲解在vue项目中如何使用Arcgis Api for javascript的<code>esri/wigets</code>。</p><h2 id="AreaMeasurement2D"><a href="#AreaMeasurement2D" class="headerlink" title="AreaMeasurement2D"></a>AreaMeasurement2D</h2><p>更多配置请查看官网：<a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-AreaMeasurement2D.html">AreaMeasurement2D</a></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">require</span>([<span class="string">&#x27;esri/widgets/AreaMeasurement2D&#x27;</span>], <span class="function"><span class="keyword">function</span>(<span class="params">AreaMeasurement2D</span>) </span>&#123; <span class="comment">/* code goes here */</span> &#125;);</span><br></pre></td></tr></table></figure><p>计算并显示地图视图中多边形的面积和周长。这个小部件将为地理坐标系和WebMercator计算面积和周长。<br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-measurement-2d">官方示例</a></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">template</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;page&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;map&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;topbar&quot;</span> <span class="attr">ref</span>=<span class="string">&quot;topbar&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">button</span> <span class="attr">class</span>=<span class="string">&quot;action-button esri-icon-measure-line&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">template</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span></span><br><span class="line"><span class="javascript">  name: <span class="string">&#x27;Home&#x27;</span>,</span></span><br><span class="line">  data () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">return</span> &#123;</span></span><br><span class="line"><span class="javascript">      view: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      map: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      activeWidget: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      publicPath: process.env.BASE_URL <span class="comment">// 获取public的</span></span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  methods: &#123;</span><br><span class="line">    measure2D (AreaMeasurement2D) &#123;</span><br><span class="line"><span class="javascript">      <span class="keyword">if</span> (<span class="built_in">this</span>.activeWidget === <span class="literal">null</span>) &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget = <span class="keyword">new</span> AreaMeasurement2D(&#123;</span></span><br><span class="line"><span class="javascript">          view: <span class="built_in">this</span>.view</span></span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget.viewModel.newMeasurement()</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.add(<span class="built_in">this</span>.activeWidget, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line"><span class="javascript">      &#125; <span class="keyword">else</span> &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.remove(<span class="built_in">this</span>.activeWidget)</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget.destroy()</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget = <span class="literal">null</span></span></span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  mounted () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">const</span> options = &#123;</span></span><br><span class="line"><span class="javascript">      url: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/init.js`</span>,</span></span><br><span class="line"><span class="javascript">      css: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/esri/themes/dark-blue/main.css`</span></span></span><br><span class="line">    &#125;</span><br><span class="line">    esriLoader.loadModules([</span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/Map&#x27;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/views/MapView&#x27;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/widgets/AreaMeasurement2D&#x27;</span></span></span><br><span class="line">    ], options)</span><br><span class="line"><span class="javascript">      .then(<span class="function">(<span class="params">[ArcGISMap, MapView, AreaMeasurement2D]</span>) =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.map = <span class="keyword">new</span> ArcGISMap(&#123;</span></span><br><span class="line"><span class="javascript">          basemap: <span class="string">&#x27;hybrid&#x27;</span></span></span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view = <span class="keyword">new</span> MapView(&#123;</span></span><br><span class="line"><span class="javascript">          container: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="javascript">          map: <span class="built_in">this</span>.map,</span></span><br><span class="line">          zoom: 4</span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="comment">// 添加按钮到右顶部</span></span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.add(<span class="string">&#x27;topbar&#x27;</span>, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line"><span class="javascript">        <span class="comment">// 为按钮绑定点击事件</span></span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.$refs.topbar.addEventListener(<span class="string">&#x27;click&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.measure2D(AreaMeasurement2D)</span></span><br><span class="line">        &#125;)</span><br><span class="line">      &#125;)</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">lang</span>=<span class="string">&quot;scss&quot;</span>&gt;</span></span><br><span class="line"><span class="css"><span class="selector-class">.page</span>&#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  overflow: hidden;</span><br><span class="line">  flex: 1 1 auto;</span><br><span class="line">  position: relative;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#map</span> &#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  height: 100%;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#topbar</span> &#123;</span></span><br><span class="line"><span class="css">  <span class="selector-tag">background</span>: <span class="selector-id">#fff</span>;</span></span><br><span class="line">  padding: 10px;</span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span> &#123;</span></span><br><span class="line">    font-size: 16px;</span><br><span class="line">    background-color: transparent;</span><br><span class="line"><span class="css">    <span class="selector-tag">border</span>: 1<span class="selector-tag">px</span> <span class="selector-tag">solid</span> <span class="selector-id">#d3d3d3</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#6e6e6e</span>;</span></span><br><span class="line">    height: 32px;</span><br><span class="line">    width: 32px;</span><br><span class="line">    text-align: center;</span><br><span class="line"><span class="css">    <span class="selector-tag">box-shadow</span>: 0 0 1<span class="selector-tag">px</span> <span class="selector-tag">rgba</span>(0, 0, 0, 0<span class="selector-class">.3</span>);</span></span><br><span class="line">  &#125;</span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span><span class="selector-pseudo">:hover</span>,</span></span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span><span class="selector-pseudo">:focus</span> &#123;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">background</span>: <span class="selector-id">#0079c1</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#e4e4e4</span>;</span></span><br><span class="line">  &#125;</span><br><span class="line"><span class="css">  <span class="selector-class">.active</span> &#123;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">background</span>: <span class="selector-id">#0079c1</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#e4e4e4</span>;</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><p>效果如图：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_03_03.png" alt="AreaMeasurement2D示例"><br><strong>解释：</strong></p><ol><li><code>this.$refs.topbar.addEventListener</code>使用<br>不能采用如下这种方式，如果这样做，就相当于立即执行了该函数<figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">this</span>.$refs.topbar.addEventListener(<span class="string">&#x27;click&#x27;</span>, <span class="built_in">this</span>.measure2D(AreaMeasurement2D))</span><br></pre></td></tr></table></figure>需要采用这种方式：<figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">this</span>.$refs.topbar.addEventListener(<span class="string">&#x27;click&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="built_in">this</span>.measure2D(AreaMeasurement2D)</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure></li></ol><p><strong>为什么不用<code>@click=&quot;measure2D&quot;</code>?</strong><br>因为我们需要将<code>AreaMeasurement2D</code>传递到<code>measure2D</code>函数中，如果使用<code>@click=&quot;measure2D&quot;</code>就无法传递。<br>2. <code>activeWidget.viewModel.newMeasurement()</code>说明<br>使用这行代码就会跳过<code>AreaMeasurement2D</code>初始的“新测量”按钮,如果不加这一行，会在右上角生成<strong>新测量</strong>按钮：如图<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_03_02.png" alt="AreaMeasurement2D默认行为"></p><h2 id="AreaMeasurement3D"><a href="#AreaMeasurement3D" class="headerlink" title="AreaMeasurement3D"></a>AreaMeasurement3D</h2><p>更多配置请查看官网：<a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-AreaMeasurement3D.html">AreaMeasurement3D</a></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">require</span>([<span class="string">&#x27;esri/widgets/AreaMeasurement3D&#x27;</span>], <span class="function"><span class="keyword">function</span>(<span class="params">AreaMeasurement3D</span>) </span>&#123; <span class="comment">/* code goes here */</span> &#125;);</span><br></pre></td></tr></table></figure><p>计算并显示多边形的面积和周长。这个小部件可以在场景视图中用来测量多边形的面积和周长。<br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-measurement-3d">官方示例</a></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">template</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;page&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;map&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;topbar&quot;</span> <span class="attr">ref</span>=<span class="string">&quot;topbar&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">button</span> <span class="attr">class</span>=<span class="string">&quot;action-button esri-icon-measure-area&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">template</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span></span><br><span class="line"><span class="javascript">  name: <span class="string">&#x27;Home&#x27;</span>,</span></span><br><span class="line">  data () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">return</span> &#123;</span></span><br><span class="line"><span class="javascript">      view: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      map: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      activeWidget: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      publicPath: process.env.BASE_URL <span class="comment">// 获取public的</span></span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  methods: &#123;</span><br><span class="line">    measure2D (AreaMeasurement3D) &#123;</span><br><span class="line"><span class="javascript">      <span class="keyword">if</span> (<span class="built_in">this</span>.activeWidget === <span class="literal">null</span>) &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget = <span class="keyword">new</span> AreaMeasurement3D(&#123;</span></span><br><span class="line"><span class="javascript">          view: <span class="built_in">this</span>.view</span></span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget.viewModel.newMeasurement()</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.add(<span class="built_in">this</span>.activeWidget, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line"><span class="javascript">      &#125; <span class="keyword">else</span> &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.remove(<span class="built_in">this</span>.activeWidget)</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget.destroy()</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget = <span class="literal">null</span></span></span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  mounted () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">const</span> options = &#123;</span></span><br><span class="line"><span class="javascript">      url: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/init.js`</span>,</span></span><br><span class="line"><span class="javascript">      css: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/esri/themes/dark-blue/main.css`</span></span></span><br><span class="line">    &#125;</span><br><span class="line">    esriLoader.loadModules([</span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/WebScene&#x27;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/views/SceneView&#x27;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/widgets/AreaMeasurement3D&#x27;</span></span></span><br><span class="line">    ], options)</span><br><span class="line"><span class="javascript">      .then(<span class="function">(<span class="params">[WebScene, SceneView, AreaMeasurement3D]</span>) =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.map = <span class="keyword">new</span> WebScene(&#123;</span></span><br><span class="line">          portalItem: &#123;</span><br><span class="line"><span class="javascript">            id: <span class="string">&#x27;b6c889ff1f684cd7a65301984b80b93d&#x27;</span></span></span><br><span class="line">          &#125;</span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view = <span class="keyword">new</span> SceneView(&#123;</span></span><br><span class="line"><span class="javascript">          container: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="javascript">          map: <span class="built_in">this</span>.map</span></span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="comment">// 添加按钮到右顶部</span></span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.add(<span class="string">&#x27;topbar&#x27;</span>, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.$refs.topbar.addEventListener(<span class="string">&#x27;click&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.measure2D(AreaMeasurement3D)</span></span><br><span class="line">        &#125;)</span><br><span class="line">      &#125;)</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">lang</span>=<span class="string">&quot;scss&quot;</span>&gt;</span></span><br><span class="line"><span class="css"><span class="selector-class">.page</span>&#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  overflow: hidden;</span><br><span class="line">  flex: 1 1 auto;</span><br><span class="line">  position: relative;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#map</span> &#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  height: 100%;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#topbar</span> &#123;</span></span><br><span class="line"><span class="css">  <span class="selector-tag">background</span>: <span class="selector-id">#fff</span>;</span></span><br><span class="line">  padding: 10px;</span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span> &#123;</span></span><br><span class="line">    font-size: 16px;</span><br><span class="line">    background-color: transparent;</span><br><span class="line"><span class="css">    <span class="selector-tag">border</span>: 1<span class="selector-tag">px</span> <span class="selector-tag">solid</span> <span class="selector-id">#d3d3d3</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#6e6e6e</span>;</span></span><br><span class="line">    height: 32px;</span><br><span class="line">    width: 32px;</span><br><span class="line">    text-align: center;</span><br><span class="line"><span class="css">    <span class="selector-tag">box-shadow</span>: 0 0 1<span class="selector-tag">px</span> <span class="selector-tag">rgba</span>(0, 0, 0, 0<span class="selector-class">.3</span>);</span></span><br><span class="line">  &#125;</span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span><span class="selector-pseudo">:hover</span>,</span></span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span><span class="selector-pseudo">:focus</span> &#123;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">background</span>: <span class="selector-id">#0079c1</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#e4e4e4</span>;</span></span><br><span class="line">  &#125;</span><br><span class="line"><span class="css">  <span class="selector-class">.active</span> &#123;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">background</span>: <span class="selector-id">#0079c1</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#e4e4e4</span>;</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><p>效果如下：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_03_04.png" alt="AreaMeasurement3D示例"></p><h2 id="DistanceMeasurement2D"><a href="#DistanceMeasurement2D" class="headerlink" title="DistanceMeasurement2D"></a>DistanceMeasurement2D</h2><p>更多配置请查看官网：<a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-DistanceMeasurement2D.html">DistanceMeasurement2D</a></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">require</span>([<span class="string">&#x27;esri/widgets/DistanceMeasurement2D&#x27;</span>], <span class="function"><span class="keyword">function</span>(<span class="params">DistanceMeasurement2D</span>) </span>&#123; <span class="comment">/* code goes here */</span> &#125;);</span><br></pre></td></tr></table></figure><p>小部件计算并显示地图视图中两个或多个点之间的距离。这个小部件将计算地理坐标系和WebMercator的地理距离。<br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-measurement-2d">官方示例</a></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">template</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;page&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;map&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;topbar&quot;</span> <span class="attr">ref</span>=<span class="string">&quot;topbar&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">button</span> <span class="attr">class</span>=<span class="string">&quot;action-button esri-icon-measure-line&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">template</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span></span><br><span class="line"><span class="javascript">  name: <span class="string">&#x27;Home&#x27;</span>,</span></span><br><span class="line">  data () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">return</span> &#123;</span></span><br><span class="line"><span class="javascript">      view: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      map: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      activeWidget: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      publicPath: process.env.BASE_URL <span class="comment">// 获取public的</span></span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  methods: &#123;</span><br><span class="line">    measure2D (DistanceMeasurement2D) &#123;</span><br><span class="line"><span class="javascript">      <span class="keyword">if</span> (<span class="built_in">this</span>.activeWidget === <span class="literal">null</span>) &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget = <span class="keyword">new</span> DistanceMeasurement2D(&#123;</span></span><br><span class="line"><span class="javascript">          view: <span class="built_in">this</span>.view</span></span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget.viewModel.newMeasurement()</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.add(<span class="built_in">this</span>.activeWidget, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line"><span class="javascript">      &#125; <span class="keyword">else</span> &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.remove(<span class="built_in">this</span>.activeWidget)</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget.destroy()</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget = <span class="literal">null</span></span></span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  mounted () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">const</span> options = &#123;</span></span><br><span class="line"><span class="javascript">      url: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/init.js`</span>,</span></span><br><span class="line"><span class="javascript">      css: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/esri/themes/dark-blue/main.css`</span></span></span><br><span class="line">    &#125;</span><br><span class="line">    esriLoader.loadModules([</span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/WebMap&#x27;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/views/MapView&#x27;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/widgets/DistanceMeasurement2D&#x27;</span></span></span><br><span class="line">    ], options)</span><br><span class="line"><span class="javascript">      .then(<span class="function">(<span class="params">[WebMap, MapView, DistanceMeasurement2D]</span>) =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.map = <span class="keyword">new</span> WebMap(&#123;</span></span><br><span class="line">          portalItem: &#123;</span><br><span class="line"><span class="javascript">            id: <span class="string">&#x27;990d0191f2574db495c4304a01c3e65b&#x27;</span></span></span><br><span class="line">          &#125;</span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view = <span class="keyword">new</span> MapView(&#123;</span></span><br><span class="line"><span class="javascript">          container: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="javascript">          map: <span class="built_in">this</span>.map</span></span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="comment">// 添加按钮到右顶部</span></span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.add(<span class="string">&#x27;topbar&#x27;</span>, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.$refs.topbar.addEventListener(<span class="string">&#x27;click&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.measure2D(DistanceMeasurement2D)</span></span><br><span class="line">        &#125;)</span><br><span class="line">      &#125;)</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">lang</span>=<span class="string">&quot;scss&quot;</span>&gt;</span></span><br><span class="line"><span class="css"><span class="selector-class">.page</span>&#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  overflow: hidden;</span><br><span class="line">  flex: 1 1 auto;</span><br><span class="line">  position: relative;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#map</span> &#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  height: 100%;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#topbar</span> &#123;</span></span><br><span class="line"><span class="css">  <span class="selector-tag">background</span>: <span class="selector-id">#fff</span>;</span></span><br><span class="line">  padding: 10px;</span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span> &#123;</span></span><br><span class="line">    font-size: 16px;</span><br><span class="line">    background-color: transparent;</span><br><span class="line"><span class="css">    <span class="selector-tag">border</span>: 1<span class="selector-tag">px</span> <span class="selector-tag">solid</span> <span class="selector-id">#d3d3d3</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#6e6e6e</span>;</span></span><br><span class="line">    height: 32px;</span><br><span class="line">    width: 32px;</span><br><span class="line">    text-align: center;</span><br><span class="line"><span class="css">    <span class="selector-tag">box-shadow</span>: 0 0 1<span class="selector-tag">px</span> <span class="selector-tag">rgba</span>(0, 0, 0, 0<span class="selector-class">.3</span>);</span></span><br><span class="line">  &#125;</span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span><span class="selector-pseudo">:hover</span>,</span></span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span><span class="selector-pseudo">:focus</span> &#123;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">background</span>: <span class="selector-id">#0079c1</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#e4e4e4</span>;</span></span><br><span class="line">  &#125;</span><br><span class="line"><span class="css">  <span class="selector-class">.active</span> &#123;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">background</span>: <span class="selector-id">#0079c1</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#e4e4e4</span>;</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><p>效果如下：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_03_05.png" alt="DistanceMeasurement2D示例"></p><h2 id="DirectLineMeasurement3D"><a href="#DirectLineMeasurement3D" class="headerlink" title="DirectLineMeasurement3D"></a>DirectLineMeasurement3D</h2><p>更多配置请查看官网：<a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-DirectLineMeasurement3D.html">DirectLineMeasurement3D</a></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">require</span>([<span class="string">&#x27;esri/widgets/DirectLineMeasurement3D&#x27;</span>], <span class="function"><span class="keyword">function</span>(<span class="params">DirectLineMeasurement3D</span>) </span>&#123; <span class="comment">/* code goes here */</span> &#125;);</span><br></pre></td></tr></table></figure><p>部件计算并显示两点之间的三维距离。这个小部件可以在SceneView中用来测量两点之间的垂直、水平和直接距离。<br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-measurement-3d">官方示例</a></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">template</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;page&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;map&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;topbar&quot;</span> <span class="attr">ref</span>=<span class="string">&quot;topbar&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">button</span> <span class="attr">class</span>=<span class="string">&quot;action-button esri-icon-measure-line&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">template</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span></span><br><span class="line"><span class="javascript">  name: <span class="string">&#x27;Home&#x27;</span>,</span></span><br><span class="line">  data () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">return</span> &#123;</span></span><br><span class="line"><span class="javascript">      view: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      map: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      activeWidget: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      publicPath: process.env.BASE_URL <span class="comment">// 获取public的</span></span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  methods: &#123;</span><br><span class="line">    measure2D (DirectLineMeasurement3D) &#123;</span><br><span class="line"><span class="javascript">      <span class="keyword">if</span> (<span class="built_in">this</span>.activeWidget === <span class="literal">null</span>) &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget = <span class="keyword">new</span> DirectLineMeasurement3D(&#123;</span></span><br><span class="line"><span class="javascript">          view: <span class="built_in">this</span>.view</span></span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget.viewModel.newMeasurement()</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.add(<span class="built_in">this</span>.activeWidget, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line"><span class="javascript">      &#125; <span class="keyword">else</span> &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.remove(<span class="built_in">this</span>.activeWidget)</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget.destroy()</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.activeWidget = <span class="literal">null</span></span></span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  mounted () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">const</span> options = &#123;</span></span><br><span class="line"><span class="javascript">      url: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/init.js`</span>,</span></span><br><span class="line"><span class="javascript">      css: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/esri/themes/dark-blue/main.css`</span></span></span><br><span class="line">    &#125;</span><br><span class="line">    esriLoader.loadModules([</span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/WebScene&#x27;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/views/SceneView&#x27;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&#x27;esri/widgets/DirectLineMeasurement3D&#x27;</span></span></span><br><span class="line">    ], options)</span><br><span class="line"><span class="javascript">      .then(<span class="function">(<span class="params">[WebScene, SceneView, DirectLineMeasurement3D]</span>) =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.map = <span class="keyword">new</span> WebScene(&#123;</span></span><br><span class="line">          portalItem: &#123;</span><br><span class="line"><span class="javascript">            id: <span class="string">&#x27;b6c889ff1f684cd7a65301984b80b93d&#x27;</span></span></span><br><span class="line">          &#125;</span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view = <span class="keyword">new</span> SceneView(&#123;</span></span><br><span class="line"><span class="javascript">          container: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="javascript">          map: <span class="built_in">this</span>.map</span></span><br><span class="line">        &#125;)</span><br><span class="line"><span class="javascript">        <span class="comment">// 添加按钮到右顶部</span></span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.view.ui.add(<span class="string">&#x27;topbar&#x27;</span>, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.$refs.topbar.addEventListener(<span class="string">&#x27;click&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.measure2D(DirectLineMeasurement3D)</span></span><br><span class="line">        &#125;)</span><br><span class="line">      &#125;)</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">lang</span>=<span class="string">&quot;scss&quot;</span>&gt;</span></span><br><span class="line"><span class="css"><span class="selector-class">.page</span>&#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  overflow: hidden;</span><br><span class="line">  flex: 1 1 auto;</span><br><span class="line">  position: relative;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#map</span> &#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  height: 100%;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#topbar</span> &#123;</span></span><br><span class="line"><span class="css">  <span class="selector-tag">background</span>: <span class="selector-id">#fff</span>;</span></span><br><span class="line">  padding: 10px;</span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span> &#123;</span></span><br><span class="line">    font-size: 16px;</span><br><span class="line">    background-color: transparent;</span><br><span class="line"><span class="css">    <span class="selector-tag">border</span>: 1<span class="selector-tag">px</span> <span class="selector-tag">solid</span> <span class="selector-id">#d3d3d3</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#6e6e6e</span>;</span></span><br><span class="line">    height: 32px;</span><br><span class="line">    width: 32px;</span><br><span class="line">    text-align: center;</span><br><span class="line"><span class="css">    <span class="selector-tag">box-shadow</span>: 0 0 1<span class="selector-tag">px</span> <span class="selector-tag">rgba</span>(0, 0, 0, 0<span class="selector-class">.3</span>);</span></span><br><span class="line">  &#125;</span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span><span class="selector-pseudo">:hover</span>,</span></span><br><span class="line"><span class="css">  <span class="selector-class">.action-button</span><span class="selector-pseudo">:focus</span> &#123;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">background</span>: <span class="selector-id">#0079c1</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#e4e4e4</span>;</span></span><br><span class="line">  &#125;</span><br><span class="line"><span class="css">  <span class="selector-class">.active</span> &#123;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">background</span>: <span class="selector-id">#0079c1</span>;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">color</span>: <span class="selector-id">#e4e4e4</span>;</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><p>效果如下：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/acrgis_03_06.png" alt="DirectLineMeasurement3D示例"></p><h2 id="Measurement"><a href="#Measurement" class="headerlink" title="Measurement"></a>Measurement</h2><p>更多配置请查看官网：<a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Measurement.html">Measurement</a></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">require</span>([<span class="string">&#x27;esri/widgets/Measurement&#x27;</span>], <span class="function"><span class="keyword">function</span>(<span class="params">Measurement</span>) </span>&#123; <span class="comment">/* code goes here */</span> &#125;);</span><br></pre></td></tr></table></figure><p>部件计算并显示两点之间的三维距离。这个小部件可以在SceneView中用来测量两点之间的垂直、水平和直接距离。<br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-measurement">官方示例</a></p><h2 id="BasemapGallery"><a href="#BasemapGallery" class="headerlink" title="BasemapGallery"></a>BasemapGallery</h2><p><code>BasemapGallery</code>小部件显示一个集合，该集合表示来自ArcGIS.com网站或用户定义的一组地图或图像服务。从BasemapGallery中选择新的基础地图时，地图的基础地图图层将被删除，并替换为在库中选择的关联基础地图的基础地图图层。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html">BasemapGallery</a></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">require</span>([<span class="string">&#x27;esri/widgets/BasemapGallery&#x27;</span>], <span class="function"><span class="keyword">function</span>(<span class="params">BasemapGallery</span>) </span>&#123; <span class="comment">/* code goes here */</span> &#125;);</span><br></pre></td></tr></table></figure><p>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/widgets-basemapgallery/index.html">官方示例</a></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">template</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;page&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;map&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">template</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span></span><br><span class="line"><span class="javascript">  name: <span class="string">&#x27;Home&#x27;</span>,</span></span><br><span class="line">  data () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">return</span> &#123;</span></span><br><span class="line"><span class="javascript">      view: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      map: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      publicPath: process.env.BASE_URL <span class="comment">// 获取public的</span></span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  methods: &#123;</span><br><span class="line">    renderMap () &#123;</span><br><span class="line"><span class="javascript">      <span class="keyword">const</span> options = &#123;</span></span><br><span class="line"><span class="javascript">        url: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/init.js`</span>,</span></span><br><span class="line"><span class="javascript">        css: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/esri/themes/dark-blue/main.css`</span></span></span><br><span class="line">      &#125;</span><br><span class="line">      esriLoader.loadModules([</span><br><span class="line"><span class="javascript">        <span class="string">&#x27;esri/Map&#x27;</span>,</span></span><br><span class="line"><span class="javascript">        <span class="string">&#x27;esri/views/MapView&#x27;</span>,</span></span><br><span class="line"><span class="javascript">        <span class="string">&#x27;esri/widgets/BasemapGallery&#x27;</span></span></span><br><span class="line">      ], options)</span><br><span class="line"><span class="javascript">        .then(<span class="function">(<span class="params">[<span class="built_in">Map</span>, MapView, BasemapGallery]</span>) =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.map = <span class="keyword">new</span> <span class="built_in">Map</span>(&#123;</span></span><br><span class="line"><span class="javascript">            basemap: <span class="string">&#x27;hybrid&#x27;</span></span></span><br><span class="line">          &#125;)</span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.view = <span class="keyword">new</span> MapView(&#123;</span></span><br><span class="line"><span class="javascript">            map: <span class="built_in">this</span>.map,</span></span><br><span class="line"><span class="javascript">            container: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line">            zoom: 4,</span><br><span class="line">            center: [104.051196, 30.573084]</span><br><span class="line">          &#125;)</span><br><span class="line"><span class="javascript">          <span class="keyword">var</span> basemapGallery = <span class="keyword">new</span> BasemapGallery(&#123;</span></span><br><span class="line"><span class="javascript">            view: <span class="built_in">this</span>.view</span></span><br><span class="line">          &#125;)</span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.view.ui.add(basemapGallery, <span class="string">&#x27;top-right&#x27;</span>)</span></span><br><span class="line">        &#125;)</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  mounted () &#123;</span><br><span class="line"><span class="javascript">    <span class="built_in">this</span>.renderMap()</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">lang</span>=<span class="string">&quot;scss&quot;</span>&gt;</span></span><br><span class="line"><span class="css"><span class="selector-class">.page</span>&#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  overflow: hidden;</span><br><span class="line">  flex: 1 1 auto;</span><br><span class="line">  position: relative;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#map</span> &#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  height: 100%;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><p>效果如下：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/acrgis_03_07.png" alt="BasemapGallery示例"></p><h2 id="BasemapToggle"><a href="#BasemapToggle" class="headerlink" title="BasemapToggle"></a>BasemapToggle</h2><p>BasemapToggle提供了一个小部件，允许最终用户在两个Basemap之间切换。切换的底图设置在视图的map对象内。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapToggle.html">BasemapToggle</a></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">require</span>([<span class="string">&#x27;esri/widgets/BasemapToggle&#x27;</span>], <span class="function"><span class="keyword">function</span>(<span class="params">BasemapToggle</span>) </span>&#123; <span class="comment">/* code goes here */</span> &#125;);</span><br></pre></td></tr></table></figure><p>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=basemap-custom">官方示例</a></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">template</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;page&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;map&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">template</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span></span><br><span class="line"><span class="javascript">  name: <span class="string">&#x27;Home&#x27;</span>,</span></span><br><span class="line">  data () &#123;</span><br><span class="line"><span class="javascript">    <span class="keyword">return</span> &#123;</span></span><br><span class="line"><span class="javascript">      view: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      map: <span class="literal">null</span>,</span></span><br><span class="line"><span class="javascript">      publicPath: process.env.BASE_URL <span class="comment">// 获取public的</span></span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  methods: &#123;</span><br><span class="line">    renderMap () &#123;</span><br><span class="line"><span class="javascript">      <span class="keyword">const</span> options = &#123;</span></span><br><span class="line"><span class="javascript">        url: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/init.js`</span>,</span></span><br><span class="line"><span class="javascript">        css: <span class="string">`<span class="subst">$&#123;<span class="built_in">this</span>.publicPath&#125;</span>4.17/esri/themes/dark-blue/main.css`</span></span></span><br><span class="line">      &#125;</span><br><span class="line">      esriLoader.loadModules([</span><br><span class="line"><span class="javascript">        <span class="string">&#x27;esri/Map&#x27;</span>,</span></span><br><span class="line"><span class="javascript">        <span class="string">&#x27;esri/views/MapView&#x27;</span>,</span></span><br><span class="line"><span class="javascript">        <span class="string">&#x27;esri/widgets/BasemapToggle&#x27;</span></span></span><br><span class="line">      ], options)</span><br><span class="line"><span class="javascript">        .then(<span class="function">(<span class="params">[<span class="built_in">Map</span>, MapView, BasemapToggle]</span>) =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.map = <span class="keyword">new</span> <span class="built_in">Map</span>(&#123;</span></span><br><span class="line"><span class="javascript">            basemap: <span class="string">&#x27;hybrid&#x27;</span></span></span><br><span class="line">          &#125;)</span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.view = <span class="keyword">new</span> MapView(&#123;</span></span><br><span class="line"><span class="javascript">            map: <span class="built_in">this</span>.map,</span></span><br><span class="line"><span class="javascript">            container: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line">            zoom: 4,</span><br><span class="line">            center: [104.051196, 30.573084]</span><br><span class="line">          &#125;)</span><br><span class="line"><span class="javascript">          <span class="keyword">var</span> basemapToggle = <span class="keyword">new</span> BasemapToggle(&#123;</span></span><br><span class="line"><span class="javascript">            view: <span class="built_in">this</span>.view,</span></span><br><span class="line"><span class="javascript">            nextBasemap: <span class="string">&#x27;topo-vector&#x27;</span></span></span><br><span class="line">          &#125;)</span><br><span class="line"><span class="javascript">          <span class="built_in">this</span>.view.ui.add(basemapToggle, <span class="string">&#x27;bottom-right&#x27;</span>)</span></span><br><span class="line">        &#125;)</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  mounted () &#123;</span><br><span class="line"><span class="javascript">    <span class="built_in">this</span>.renderMap()</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">lang</span>=<span class="string">&quot;scss&quot;</span>&gt;</span></span><br><span class="line"><span class="css"><span class="selector-class">.page</span>&#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  overflow: hidden;</span><br><span class="line">  flex: 1 1 auto;</span><br><span class="line">  position: relative;</span><br><span class="line">&#125;</span><br><span class="line"><span class="css"><span class="selector-id">#map</span> &#123;</span></span><br><span class="line">  width: 100%;</span><br><span class="line">  height: 100%;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><p>效果如下：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_03_08.png" alt="BasemapToggle示例"></p><h2 id="Bookmarks"><a href="#Bookmarks" class="headerlink" title="Bookmarks"></a>Bookmarks</h2><p>Bookmarks小部件允许最终用户快速导航到感兴趣的特定区域。它显示书签列表，这些书签通常在WebMap中定义。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Bookmarks.html">Bookmarks</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-bookmarks">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=webstylesymbol-2d">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=labels-multiple-classes">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=featurelayerview-query-distance">官方示例</a></p><h2 id="BuildingExplorer"><a href="#BuildingExplorer" class="headerlink" title="BuildingExplorer"></a>BuildingExplorer</h2><p>BuildingExplorer小部件用于过滤和浏览BuildingSceneLayers的各个组件。建筑场景是建筑物和内部的复杂数字模型，可以包含数千个分组在子层中的组件。使用此小部件，可以按级别、施工阶段或按规程和类别筛选建筑物。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BuildingExplorer.html">BuildingExplorer</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=building-scene-layer-filter">官方示例</a></p><h2 id="Compass"><a href="#Compass" class="headerlink" title="Compass"></a>Compass</h2><p>Compass小部件指示相对于当前视图旋转或相机航向的北向位置。单击“指南针”小部件将视图旋转为朝北（航向=0）。默认情况下，此小部件将添加到SceneView。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Compass.html">Compass</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-compass-2d">官方示例</a></p><h2 id="CoordinateConversion"><a href="#CoordinateConversion" class="headerlink" title="CoordinateConversion"></a>CoordinateConversion</h2><p>CoordinateConversion小部件提供了一种将用户光标位置显示为地图坐标或几种常用坐标符号之一的方法。此外，小部件还提供了一种将用户输入坐标转换为点的方法。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-CoordinateConversion.html">CoordinateConversion</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-coordinateconversion">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-coordinateconversion-custom">官方示例</a></p><h2 id="Daylight"><a href="#Daylight" class="headerlink" title="Daylight"></a>Daylight</h2><p>Daylight小部件可用于操纵时间和日期，并在SceneView中切换阴影。更改时间和日期时，太阳和星星的位置会相应地更新，从而更改场景中的照明和阴影。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Daylight.html">Daylight</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-daylight">官方示例</a></p><h2 id="Directions"><a href="#Directions" class="headerlink" title="Directions"></a>Directions</h2><p>Directions小部件提供了一种使用ArcGIS Online和自定义网络分析路线服务构建驾驶和步行方向的方法。与RouteTask的工作方式类似，这个小部件生成一条路由，使用指定的网络在多个点之间寻找成本最低的路径。搜索地址时，用于导航的点的位置取决于搜索属性的locationType。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Directions.html">Directions</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-directions">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=layers-imagery-vfrenderer">官方示例</a></p><h2 id="Editor"><a href="#Editor" class="headerlink" title="Editor"></a>Editor</h2><p>Editor小部件提供开箱即用的编辑体验，以帮助简化web应用程序中的编辑体验。小部件有两个不同的工作流：CreateWorkflow和UpdateWorkflow。这些工作流允许您在可编辑要素图层中添加要素或编辑和/或删除现有要素。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html">Editor</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/widgets-editor-basic/index.html">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=popup-editaction">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-editor-3d-scenelayer">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-editor-configurable">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-editor-3d">官方示例</a></p><h2 id="Expand"><a href="#Expand" class="headerlink" title="Expand"></a>Expand</h2><p>Expand小部件充当打开小部件的可单击按钮。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Expand.html">Expand</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-expand">官方示例</a></p><h2 id="FeatureForm"><a href="#FeatureForm" class="headerlink" title="FeatureForm"></a>FeatureForm</h2><p>FeatureForm小部件显示功能的属性。此小部件根据功能的属性以及字段是否允许编辑来呈现输入字段。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureForm.html">FeatureForm</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=editing-featureform-fieldvisibility">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=editing-applyedits">官方示例</a><br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=editing-groupedfeatureform">官方示例</a></p><h2 id="Fullscreen"><a href="#Fullscreen" class="headerlink" title="Fullscreen"></a>Fullscreen</h2><p>Fullscreen提供一个简单的小部件来显示视图或使用整个屏幕的用户定义的HTMLElement。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Fullscreen.html">Fullscreen</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=visualization-vv-opacity-animate">官方示例</a></p><h2 id="Home"><a href="#Home" class="headerlink" title="Home"></a>Home</h2><p>Home提供一个简单的小部件，用于将视图切换到其初始视点或先前定义的视点。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Home.html">Home</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-home">官方示例</a></p><h2 id="LayerList"><a href="#LayerList" class="headerlink" title="LayerList"></a>LayerList</h2><p>LayerList小部件提供了一种显示层列表并打开/关闭其可见性的方法。ListItemAPI提供对每个层的属性的访问，允许开发人员配置与层相关的操作，并允许开发人员向与层相关的项添加内容。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html">LayerList</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-layerlist">官方示例</a></p><h2 id="Legend"><a href="#Legend" class="headerlink" title="Legend"></a>Legend</h2><p>Legend小部件显示地图中图层的标签和符号。标签及其相应的符号取决于在层的渲染器中设置的值。图例将仅显示视图中可见的图层和子图层。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html">Legend</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-legend">官方示例</a></p><h2 id="LineOfSight"><a href="#LineOfSight" class="headerlink" title="LineOfSight"></a>LineOfSight</h2><p>LineOfSight小部件是一个三维分析工具，允许您在SceneView中执行可见性分析。给定观察者和多个目标点之间的可见性是根据视图中当前显示的内容（包括地面、集成网格和三维对象（如建筑物或树木））计算的。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LineOfSight.html">LineOfSight</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-line-of-sight">官方示例</a></p><h2 id="Locate"><a href="#Locate" class="headerlink" title="Locate"></a>Locate</h2><p>Locate提供一个简单的小部件，将视图动画化到用户的当前位置。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Locate.html">Locate</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/widgets-locate/index.html">官方示例</a></p><h2 id="NavigationToggle"><a href="#NavigationToggle" class="headerlink" title="NavigationToggle"></a>NavigationToggle</h2><p>NavigationToggle提供两个简单的按钮来切换SceneView的导航模式。请注意，此小部件仅用于SceneView中的3D鼠标交互。它对触摸导航没有影响，并且不应与地图视图中的二维鼠标交互一起使用。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-NavigationToggle.html">NavigationToggle</a><br>示例：</p><h2 id="Popup"><a href="#Popup" class="headerlink" title="Popup"></a>Popup</h2><p>Popup小部件允许用户查看功能属性中的内容。弹出窗口通过为用户提供一种简单的方式来交互和查看层中的属性，从而增强了web应用程序。它们在向用户传递信息方面起着重要的作用，从而提高了应用程序的讲故事能力。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html">Popup</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=popup-actions">官方示例</a></p><h2 id="Print"><a href="#Print" class="headerlink" title="Print"></a>Print</h2><p>Print小部件将应用程序与打印服务连接起来，以允许打印地图。它利用了服务器端、高质量、完整的地图打印功能，使用ArcGIS的ExportWebMap服务，可以配置自定义布局模板。其中一个只显示地图，而另一个提供带有图例等的布局。Print小部件与PrintTask一起工作，PrintTask生成地图的打印机就绪版本。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html">Print</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-print">官方示例</a></p><h2 id="ScaleBar"><a href="#ScaleBar" class="headerlink" title="ScaleBar"></a>ScaleBar</h2><p>ScaleBar小部件在地图上或指定的HTML节点中显示比例尺。小部件遵循各种坐标系，并以公制或非公制值显示单位。公制值根据比例显示公里或米，同样，非公制值根据比例显示英里和英尺。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ScaleBar.html">ScaleBar</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-scalebar">官方示例</a></p><h2 id="ScaleRangeSlider"><a href="#ScaleRangeSlider" class="headerlink" title="ScaleRangeSlider"></a>ScaleRangeSlider</h2><p>ScaleRangeSlider小部件允许用户根据指定的缩放范围设置最小和最大缩放。当一个层被提供给小部件时，minScale和maxScale被设置为该层的缩放范围。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ScaleRangeSlider.html">ScaleRangeSlider</a><br>示例：</p><h2 id="Search"><a href="#Search" class="headerlink" title="Search"></a>Search</h2><p>Search小部件提供了一种对定位器服务、地图/要素服务要素层和/或表执行搜索操作的方法。如果将定位器与地理编码服务一起使用，则使用findaddress操作，而查询则在要素图层上使用。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html">Search</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-search-3d">官方示例</a></p><h2 id="Sketch"><a href="#Sketch" class="headerlink" title="Sketch"></a>Sketch</h2><p>Sketch小部件提供了一个简单的UI，用于在MapView或SceneView上创建和更新图形。这大大减少了在视图中处理图形所需的代码。它用于存储在其图层属性中的图形。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Locate.html">Sketch</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=sketch-geometries">官方示例</a></p><h2 id="Slice"><a href="#Slice" class="headerlink" title="Slice"></a>Slice</h2><p>Slice切片小部件是一个三维分析工具，可以用来显示SceneView中被遮挡的内容。“切片”小部件可以应用于任何层类型，从而可以查看建筑物内部或探索地质表面。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Slice.html">Slice</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=building-scene-layer-slice">官方示例</a></p><h2 id="Slider"><a href="#Slider" class="headerlink" title="Slider"></a>Slider</h2><p>Slider一个滑块小部件，可用于过滤数据或从用户处收集数字输入。滑块可以有多个拇指，并提供格式化标签和控制用户输入的功能。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Slider.html">Slider</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=visualization-update-data">官方示例</a></p><h2 id="Swipe"><a href="#Swipe" class="headerlink" title="Swipe"></a>Swipe</h2><p>Swipe滑动小部件提供了一个工具来显示地图顶部一个或多个图层的一部分。图层可以垂直或水平滑动，以方便比较两个图层或查看图层下面的内容。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Swipe.html">Swipe</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-swipe">官方示例</a></p><h2 id="TableList"><a href="#TableList" class="headerlink" title="TableList"></a>TableList</h2><p>TableList小部件提供了一种显示与地图关联的表列表的方法。它用于要素图层表。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-TableList.html">TableList</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-tablelist">官方示例</a></p><h2 id="TimeSlider"><a href="#TimeSlider" class="headerlink" title="TimeSlider"></a>TimeSlider</h2><p>TimeSlider小部件简化了应用程序中时态数据的可视化。在将时间滑块添加到应用程序之前，首先应该了解如何配置它以正确显示时态数据。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Locate.html">TimeSlider</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-timeslider">官方示例</a></p><h2 id="Track"><a href="#Track" class="headerlink" title="Track"></a>Track</h2><p>Track提供一个简单的按钮，用于在单击时将视图设置为用户位置的动画。视图根据被跟踪设备朝向的方向旋转。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Track.html">Track</a><br>示例：<br><a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-track">官方示例</a></p><h2 id="Zoom"><a href="#Zoom" class="headerlink" title="Zoom"></a>Zoom</h2><p>Zoom缩放小部件允许用户在视图中放大/缩小。<br><a href="https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Locate.html">Zoom</a><br>示例：</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    <category term="vue" scheme="/categories/web%E5%89%8D%E7%AB%AF/vue/"/>
    
    <category term="WebGis" scheme="/categories/web%E5%89%8D%E7%AB%AF/vue/WebGis/"/>
    
    
    <category term="arcgis4.17" scheme="https://jiuaiop.gitee.io/tags/arcgis4-17/"/>
    
    <category term="vue" scheme="https://jiuaiop.gitee.io/tags/vue/"/>
    
    <category term="esri/wigets" scheme="https://jiuaiop.gitee.io/tags/esri-wigets/"/>
    
  </entry>
  
  <entry>
    <title>Arcgis学习之路(五)之实现图层控制</title>
    <link href="https://jiuaiop.gitee.io/posts/60272b20-49b5-11eb-b4bb-b1a7a3af1020/"/>
    <id>https://jiuaiop.gitee.io/posts/60272b20-49b5-11eb-b4bb-b1a7a3af1020/</id>
    <published>2020-12-29T09:08:11.000Z</published>
    <updated>2020-12-29T09:08:11.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="Arcgis实现图层控制"><a href="#Arcgis实现图层控制" class="headerlink" title="Arcgis实现图层控制"></a>Arcgis实现图层控制</h1><p>参考：<a href="https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-layerlist-actions">https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=widgets-layerlist-actions</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="https://jiuaiop.gitee.io/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    <category term="WebGis" scheme="https://jiuaiop.gitee.io/categories/web%E5%89%8D%E7%AB%AF/WebGis/"/>
    
    
    <category term="arcgis4.17" scheme="https://jiuaiop.gitee.io/tags/arcgis4-17/"/>
    
    <category term="图层控制" scheme="https://jiuaiop.gitee.io/tags/%E5%9B%BE%E5%B1%82%E6%8E%A7%E5%88%B6/"/>
    
    <category term="vue" scheme="https://jiuaiop.gitee.io/tags/vue/"/>
    
  </entry>
  
  <entry>
    <title>Arcgis学习之路(四)之layers的使用</title>
    <link href="https://jiuaiop.gitee.io/posts/77f3cf20-49b4-11eb-b8af-e92f48f5dd23/"/>
    <id>https://jiuaiop.gitee.io/posts/77f3cf20-49b4-11eb-b8af-e92f48f5dd23/</id>
    <published>2020-12-29T09:01:42.000Z</published>
    <updated>2020-12-29T09:01:42.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="esri-layer"><a href="#esri-layer" class="headerlink" title="esri/layer"></a>esri/layer</h1><h2 id="1、esri-layer的说明"><a href="#1、esri-layer的说明" class="headerlink" title="1、esri/layer的说明"></a>1、esri/layer的说明</h2><h2 id="1、esri-layer的使用"><a href="#1、esri-layer的使用" class="headerlink" title="1、esri/layer的使用"></a>1、esri/layer的使用</h2>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="https://jiuaiop.gitee.io/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    <category term="WebGis" scheme="https://jiuaiop.gitee.io/categories/web%E5%89%8D%E7%AB%AF/WebGis/"/>
    
    
    <category term="arcgis4.17" scheme="https://jiuaiop.gitee.io/tags/arcgis4-17/"/>
    
    <category term="vue" scheme="https://jiuaiop.gitee.io/tags/vue/"/>
    
    <category term="esri/layers" scheme="https://jiuaiop.gitee.io/tags/esri-layers/"/>
    
  </entry>
  
  <entry>
    <title>Arcgis学习之路(二)之离线部署</title>
    <link href="https://jiuaiop.gitee.io/posts/748483e0-49b2-11eb-8e4b-29382c4d20e2/"/>
    <id>https://jiuaiop.gitee.io/posts/748483e0-49b2-11eb-8e4b-29382c4d20e2/</id>
    <published>2020-12-29T08:47:17.000Z</published>
    <updated>2020-12-29T08:47:17.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="arcgis的几种使用情况"><a href="#arcgis的几种使用情况" class="headerlink" title="arcgis的几种使用情况"></a>arcgis的几种使用情况</h1><h2 id="1、api文件下载-本人使用4-17"><a href="#1、api文件下载-本人使用4-17" class="headerlink" title="1、api文件下载(本人使用4.17)"></a>1、api文件下载(本人使用4.17)</h2><p>1.首先先到百度搜索 arcgis api for js，进入<a href="https://developers.arcgis.com/javascript/">官网</a>。<br>2.找到<a href="https://developers.arcgis.com/javascript/latest/guide/get-api/"><code>Get the API</code></a>按钮。<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_download_api.png" alt="arcgis_download_api"><br>3.找到如图所示，点击<a href="https://developers.arcgis.com/downloads/apis-and-sdks?product=javascript">Download API</a><br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_download.png" alt="arcgis_download"><br>4.选择对应版本的<code>API</code>和<code>Documentation</code>(官网默认展示的是最新版本的，所以其他的版本的建议还是将文档也下载下来)<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_download_list.png" alt="arcgis_download_list"></p><h2 id="2、部署"><a href="#2、部署" class="headerlink" title="2、部署"></a>2、部署</h2><h3 id="2-1-离线部署-本地部署-不用tomcat或者IIS服务器"><a href="#2-1-离线部署-本地部署-不用tomcat或者IIS服务器" class="headerlink" title="2.1 离线部署|本地部署(不用tomcat或者IIS服务器)"></a>2.1 离线部署|本地部署(不用tomcat或者IIS服务器)</h3><p>1.首先将你下载的API压缩包解压，然后进去找到以你的api版本号命名的文件夹，我的版本是4.17，所以我打开4.17这个文件夹，文件夹里面的内容如下：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_%E7%A6%BB%E7%BA%BF%E9%83%A8%E7%BD%B2_01.png" alt="arcgis_离线部署_01"><br>2.将4.17这个文件夹拷贝出来（也可以不拷贝出来，就在原位置操作），随便放在一个位置，然后把文件夹名字改成你想要的名字（不改也可以），这里我将文件夹名字不做修改。<br>3.打开<code>4.17</code>文件夹，找到并打开<code>init.js</code>文件和<code>dojo文件夹下的dojo.js</code>文件，crtl+f搜索找到<code>[HOSTNAME_AND_PATH_TO_JSAPI]</code>这串文字，然后将包含这串文字的引号里面里的内容用<code>&quot;你修改的文件夹名字/dojo&quot;</code>替换,这里我用<code>&quot;4.17/dojo&quot;</code>替换，好啦，大功告成了，让我们来测试一下吧！<br>4.使用<br><strong>在html文件中使用</strong>：前提是你的<code>.html</code>文件必须和<code>4.17</code>文件在同一位置。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;4.17/esri/themes/dark-blue/main.css&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;4.17/init.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>如果不在请采用相对路径，如：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!--</span></span><br><span class="line"><span class="comment">文件路径</span></span><br><span class="line"><span class="comment">/html/index.html</span></span><br><span class="line"><span class="comment">/4.17</span></span><br><span class="line"><span class="comment">--&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;../4.17/esri/themes/dark-blue/main.css&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span></span></span><br></pre></td></tr></table></figure><p><strong>在vue项目使用</strong>：前提是你的<code>4.17</code>文件夹放进<code>/public</code>的根目录下即：<code>/public/4.17</code>，然后安装<a href=""><code>esri-loader</code></a></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> options = &#123;</span><br><span class="line">url: <span class="string">&#x27;4.17/init.js&#x27;</span>,</span><br><span class="line">css: <span class="string">&#x27;../../4.17/esri/themes/dark-blue/main.css&#x27;</span></span><br><span class="line">&#125;</span><br><span class="line">esriLoader.loadModules([</span><br><span class="line"><span class="string">&#x27;esri/Map&#x27;</span>,</span><br><span class="line"><span class="string">&#x27;esri/views/MapView&#x27;</span></span><br><span class="line">], options)</span><br><span class="line">.then(<span class="function">(<span class="params">[ArcGISMap, MapView]</span>) =&gt;</span> &#123;</span><br><span class="line"><span class="keyword">var</span> map = <span class="keyword">new</span> ArcGISMap(&#123;</span><br><span class="line">basemap: <span class="string">&#x27;streets-relief-vector&#x27;</span></span><br><span class="line">&#125;)</span><br><span class="line"><span class="keyword">var</span> view = <span class="keyword">new</span> MapView(&#123;</span><br><span class="line">container: <span class="string">&#x27;map&#x27;</span>,</span><br><span class="line">map: <span class="built_in">this</span>.map,</span><br><span class="line">center: [<span class="number">-101.17</span>, <span class="number">21.78</span>],</span><br><span class="line">zoom: <span class="number">4</span></span><br><span class="line">&#125;)</span><br><span class="line"><span class="comment">// 当视图加载完毕后</span></span><br><span class="line">view.when(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">&#125;)</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure><h3 id="2-2-离线部署-本地部署-用tomcat服务器"><a href="#2-2-离线部署-本地部署-用tomcat服务器" class="headerlink" title="2.2 离线部署|本地部署(用tomcat服务器)"></a>2.2 离线部署|本地部署(用tomcat服务器)</h3><p>1.首先将下载好的api文件<code>4.17</code>放入Tomcat服务中的<code>Webapp</code>下，然后自己<code>百度tomcat配置项目使用端口</code>，然后启动你的Tomcat服务器<br>2.打开<code>4.17</code>文件夹，找到并打开<code>init.js</code>文件和<code>dojo文件夹下的dojo.js</code>文件，crtl+f搜索找到<code>[HOSTNAME_AND_PATH_TO_JSAPI]</code>这串文字，然后将包含这串文字的引号里面里的内容用<code>&quot;http://localhost:你配置的端口/4.17/dojo&quot;</code>替换,这里我用<code>&quot;http://localhost:你配置的端口/4.17/dojo&quot;</code>替换，好啦，大功告成了，让我们来测试一下吧！<br>3.使用<br><strong>在html文件中使用</strong></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;http://localhost:你配置的端口/4.17/esri/themes/dark-blue/main.css&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;http://localhost:你配置的端口/4.17/init.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p><strong>在vue项目使用</strong></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> options = &#123;</span><br><span class="line">url: <span class="string">&#x27;http://localhost:你配置的端口/4.17/init.js&#x27;</span>,</span><br><span class="line">css: <span class="string">&#x27;http://localhost:你配置的端口/4.17/esri/themes/dark-blue/main.css&#x27;</span></span><br><span class="line">&#125;</span><br><span class="line">esriLoader.loadModules([</span><br><span class="line"><span class="string">&#x27;esri/Map&#x27;</span>,</span><br><span class="line"><span class="string">&#x27;esri/views/MapView&#x27;</span></span><br><span class="line">], options)</span><br><span class="line">.then(<span class="function">(<span class="params">[ArcGISMap, MapView]</span>) =&gt;</span> &#123;</span><br><span class="line"><span class="keyword">var</span> map = <span class="keyword">new</span> ArcGISMap(&#123;</span><br><span class="line">basemap: <span class="string">&#x27;streets-relief-vector&#x27;</span></span><br><span class="line">&#125;)</span><br><span class="line"><span class="keyword">var</span> view = <span class="keyword">new</span> MapView(&#123;</span><br><span class="line">container: <span class="string">&#x27;map&#x27;</span>,</span><br><span class="line">map: <span class="built_in">this</span>.map,</span><br><span class="line">center: [<span class="number">-101.17</span>, <span class="number">21.78</span>],</span><br><span class="line">zoom: <span class="number">4</span></span><br><span class="line">&#125;)</span><br><span class="line"><span class="comment">// 当视图加载完毕后</span></span><br><span class="line">view.when(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">&#125;)</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure><p>当然<code>以我的失败经验得出</code>肯定会出错，比如左上角的控件符号没有显示,控制台会打印出以下错误：</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Access to Font at &#39;http:&#x2F;&#x2F;localhost:8080&#x2F;4.17&#x2F;esri&#x2F;themes&#x2F;base&#x2F;icons&#x2F;fonts&#x2F;CalciteWebCoreIcons.woff?cu4poq&#39; from origin &#39;null&#39; has been blocked by CORS policy: No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource. Origin &#39;null&#39; is therefore not allowed access.</span><br></pre></td></tr></table></figure><p>这是显示你已经跨域请求资源导致资源请求失败 但是解决办法是有的 修改Tomcat的web.xml配置文件  打开config/web.xml文件，添加下面的代码</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">（如web.xml中有多个filter时要把下面配置放在最前端）</span><br><span class="line"><span class="tag">&lt;<span class="name">filter</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">filter-name</span>&gt;</span>CorsFilter<span class="tag">&lt;/<span class="name">filter-name</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">filter-class</span>&gt;</span>org.apache.catalina.filters.CorsFilter<span class="tag">&lt;/<span class="name">filter-class</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">init-param</span>&gt;</span></span><br><span class="line">   <span class="tag">&lt;<span class="name">param-name</span>&gt;</span>cors.allowed.methods<span class="tag">&lt;/<span class="name">param-name</span>&gt;</span></span><br><span class="line">   <span class="tag">&lt;<span class="name">param-value</span>&gt;</span>GET,POST,HEAD,OPTIONS,PUT<span class="tag">&lt;/<span class="name">param-value</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">init-param</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">init-param</span>&gt;</span></span><br><span class="line">   <span class="tag">&lt;<span class="name">param-name</span>&gt;</span>cors.allowed.headers<span class="tag">&lt;/<span class="name">param-name</span>&gt;</span></span><br><span class="line">   <span class="tag">&lt;<span class="name">param-value</span>&gt;</span>Access-Control-Allow-Origin,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers<span class="tag">&lt;/<span class="name">param-value</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;/<span class="name">init-param</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">async-supported</span>&gt;</span>true<span class="tag">&lt;/<span class="name">async-supported</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">filter</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">filter-mapping</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">filter-name</span>&gt;</span>CorsFilter<span class="tag">&lt;/<span class="name">filter-name</span>&gt;</span></span><br><span class="line"> <span class="tag">&lt;<span class="name">url-pattern</span>&gt;</span>/*<span class="tag">&lt;/<span class="name">url-pattern</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">filter-mapping</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="2-2-不部署-在线Acrgis"><a href="#2-2-不部署-在线Acrgis" class="headerlink" title="2.2 不部署|在线Acrgis"></a>2.2 不部署|在线Acrgis</h3><p>这种情况因为使用的是<code>arcgis</code>官网的API，并且是在国外，所以在访问过程中会特别慢，<strong>不建议使用</strong>。<br><strong>在html文件中使用</strong></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;https://js.arcgis.com/4.17/esri/themes/light/main.css&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;https://js.arcgis.com/4.17/&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p><strong>在vue项目使用</strong></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> options = &#123;</span><br><span class="line">url: <span class="string">&#x27;https://js.arcgis.com/4.17/init.js&#x27;</span>,</span><br><span class="line">css: <span class="string">&#x27;https://js.arcgis.com/4.17/esri/themes/dark-blue/main.css&#x27;</span></span><br><span class="line">&#125;</span><br><span class="line">esriLoader.loadModules([</span><br><span class="line"><span class="string">&#x27;esri/Map&#x27;</span>,</span><br><span class="line"><span class="string">&#x27;esri/views/MapView&#x27;</span></span><br><span class="line">], options)</span><br><span class="line">.then(<span class="function">(<span class="params">[ArcGISMap, MapView]</span>) =&gt;</span> &#123;</span><br><span class="line"><span class="keyword">var</span> map = <span class="keyword">new</span> ArcGISMap(&#123;</span><br><span class="line">basemap: <span class="string">&#x27;streets-relief-vector&#x27;</span></span><br><span class="line">&#125;)</span><br><span class="line"><span class="keyword">var</span> view = <span class="keyword">new</span> MapView(&#123;</span><br><span class="line">container: <span class="string">&#x27;map&#x27;</span>,</span><br><span class="line">map: <span class="built_in">this</span>.map,</span><br><span class="line">center: [<span class="number">-101.17</span>, <span class="number">21.78</span>],</span><br><span class="line">zoom: <span class="number">4</span></span><br><span class="line">&#125;)</span><br><span class="line"><span class="comment">// 当视图加载完毕后</span></span><br><span class="line">view.when(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">&#125;)</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure><p>出现地图代表访问成功。<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/arcgis_02_02.png" alt="arcgis示例地图"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    <category term="WebGis" scheme="/categories/web%E5%89%8D%E7%AB%AF/WebGis/"/>
    
    
    <category term="arcgis4.17" scheme="https://jiuaiop.gitee.io/tags/arcgis4-17/"/>
    
    <category term="部署" scheme="https://jiuaiop.gitee.io/tags/%E9%83%A8%E7%BD%B2/"/>
    
  </entry>
  
  <entry>
    <title>Arcgis学习之路(一)之基本使用</title>
    <link href="https://jiuaiop.gitee.io/posts/d8bac550-49b1-11eb-a418-fd298bd981a4/"/>
    <id>https://jiuaiop.gitee.io/posts/d8bac550-49b1-11eb-a418-fd298bd981a4/</id>
    <published>2020-12-29T08:42:55.000Z</published>
    <updated>2020-12-29T08:42:55.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="arcgis的基本使用"><a href="#arcgis的基本使用" class="headerlink" title="arcgis的基本使用"></a>arcgis的基本使用</h1><p>参考：<a href="https://developers.arcgis.com/javascript/latest/guide/quick-start/">https://developers.arcgis.com/javascript/latest/guide/quick-start/</a></p><h2 id="1、在html中使用"><a href="#1、在html中使用" class="headerlink" title="1、在html中使用"></a>1、在html中使用</h2><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="meta-keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">title</span>&gt;</span>Document<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;https://js.arcgis.com/4.17/esri/themes/light/main.css&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;https://js.arcgis.com/4.17/&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">style</span>&gt;</span></span><br><span class="line"><span class="css">    <span class="selector-tag">html</span>,<span class="selector-tag">body</span>,<span class="selector-id">#map</span>&#123;</span></span><br><span class="line">      height: 100%;</span><br><span class="line">      width: 100%;</span><br><span class="line">      box-sizing: border-box;</span><br><span class="line">      overflow: hidden;</span><br><span class="line">      padding: 0;</span><br><span class="line">      margin: 0;</span><br><span class="line">    &#125;</span><br><span class="line">  <span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;map&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript">    <span class="built_in">require</span>([</span></span><br><span class="line"><span class="javascript">      <span class="string">&quot;esri/Map&quot;</span>,</span></span><br><span class="line"><span class="javascript">      <span class="string">&quot;esri/views/MapView&quot;</span></span></span><br><span class="line"><span class="javascript">    ], <span class="function"><span class="keyword">function</span>(<span class="params">Map, MapView</span>) </span>&#123;</span></span><br><span class="line"><span class="javascript">      <span class="keyword">var</span> map = <span class="keyword">new</span> <span class="built_in">Map</span>(&#123;</span></span><br><span class="line"><span class="javascript">        basemap: <span class="string">&quot;topo-vector&quot;</span></span></span><br><span class="line">      &#125;)</span><br><span class="line"><span class="javascript">      <span class="keyword">var</span> view = <span class="keyword">new</span> MapView(&#123;</span></span><br><span class="line"><span class="javascript">        container: <span class="string">&quot;map&quot;</span>,</span></span><br><span class="line">        map: map,</span><br><span class="line">        center: [-118.71511,34.09042],</span><br><span class="line">        zoom: 11</span><br><span class="line">      &#125;)</span><br><span class="line">    &#125;)</span><br><span class="line">  <span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure><h2 id="2、在vue项目中使用"><a href="#2、在vue项目中使用" class="headerlink" title="2、在vue项目中使用"></a>2、在vue项目中使用</h2><p>安装<code>arcgis</code>官方依赖<code>esri-loader</code>,这个只是开发依赖,因此使用命令<code>npm i esri-loader --save-dev</code>来安装.<br>用模块的方式引入 esri-loader:</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span><br></pre></td></tr></table></figure><p><strong>esriLoader</strong>有以下几个方法:</p><ol><li>getScript () 从库里面获取 js 文件 ;</li><li>isLoaded () 检测模块是否加载完成 ;</li><li>loadModules( [ ], options) 用于加载arcgis 模块;</li><li>loadCss( url ) 用于加载css文件;</li><li>loadScript({url: “xxxxxxxx” }) 将js 加载到页面上;<figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">template</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;map&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">template</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript"><span class="keyword">import</span> esriLoader <span class="keyword">from</span> <span class="string">&#x27;esri-loader&#x27;</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span></span><br><span class="line">mounted () &#123;</span><br><span class="line"><span class="javascript"><span class="keyword">const</span> options = &#123;</span></span><br><span class="line"><span class="javascript">url: <span class="string">&#x27;https://js.arcgis.com/4.17/init.js&#x27;</span>,</span></span><br><span class="line"><span class="javascript">css: <span class="string">&#x27;https://js.arcgis.com/4.17/esri/themes/light/main.css&#x27;</span></span></span><br><span class="line">&#125;</span><br><span class="line">esriLoader.loadModules([</span><br><span class="line"><span class="javascript">        <span class="string">&#x27;esri/Map&#x27;</span>,</span></span><br><span class="line"><span class="javascript">        <span class="string">&#x27;esri/views/MapView&#x27;</span></span></span><br><span class="line">      ], options)</span><br><span class="line"><span class="javascript">        .then(<span class="function">(<span class="params">[ArcGISMap, MapView]</span>) =&gt;</span> &#123;</span></span><br><span class="line"><span class="javascript"><span class="built_in">this</span>.map1 = <span class="keyword">new</span> ArcGISMap(&#123;</span></span><br><span class="line"><span class="javascript">basemap: <span class="string">&#x27;streets-relief-vector&#x27;</span></span></span><br><span class="line">&#125;)</span><br><span class="line"><span class="javascript"><span class="built_in">this</span>.view1 = <span class="keyword">new</span> MapView(&#123;</span></span><br><span class="line"><span class="javascript">container: <span class="string">&#x27;map1&#x27;</span>,</span></span><br><span class="line"><span class="javascript">map: <span class="built_in">this</span>.map1,</span></span><br><span class="line">center: [-118.71511,34.09042],</span><br><span class="line">zoom: 4</span><br><span class="line">&#125;)</span><br><span class="line">&#125;)</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure>具体部署：<a href="http://www.chenliang0829.cn:8081/topic/5fe590563f9619194ccb8fa7">arcgis for js本地部署/不部署/在线arcgis的几种情况使用</a></li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    <category term="WebGis" scheme="/categories/web%E5%89%8D%E7%AB%AF/WebGis/"/>
    
    
    <category term="arcgis4.17" scheme="https://jiuaiop.gitee.io/tags/arcgis4-17/"/>
    
  </entry>
  
  <entry>
    <title>vue3学习之路(二)之基础学习</title>
    <link href="https://jiuaiop.gitee.io/posts/b9316c70-1a72-11eb-90d7-41c31ce6a681/"/>
    <id>https://jiuaiop.gitee.io/posts/b9316c70-1a72-11eb-90d7-41c31ce6a681/</id>
    <published>2020-10-30T05:42:40.000Z</published>
    <updated>2020-10-30T05:42:40.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="应用和组件实例"><a href="#应用和组件实例" class="headerlink" title="应用和组件实例"></a>应用和组件实例</h2><h3 id="创建一个应用实例"><a href="#创建一个应用实例" class="headerlink" title="创建一个应用实例"></a>创建一个应用实例</h3><p>每个 Vue 应用都是通过用 <code>createApp</code> 函数创建一个新的<strong>应用实例</strong>开始的：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> app = Vue.createApp(&#123; <span class="comment">/* 选项 */</span> &#125;)</span><br></pre></td></tr></table></figure><p>应用实例暴露的大多数方法都会返回该同一实例，允许链式：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">Vue.createApp(&#123;&#125;)</span><br><span class="line">  .component(<span class="string">&#x27;SearchInput&#x27;</span>, SearchInputComponent)</span><br><span class="line">  .directive(<span class="string">&#x27;focus&#x27;</span>, FocusDirective)</span><br><span class="line">  .use(LocalePlugin)</span><br></pre></td></tr></table></figure><p>传递给 <code>createApp</code> 的<strong>选项</strong>用于配置<strong>根组件</strong>。当我们挂载应用时，该组件被用作渲染的起点。<br><strong>注意：</strong>一个应用需要被挂载到一个 DOM 元素中。<br>例如：如果我们想把一个 Vue 应用挂载到<code>&lt;div id=&quot;app&quot;&gt;&lt;/div&gt;</code>，我们应该传递<code>#app</code>：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> RootComponent = &#123; <span class="comment">/* 选项 */</span> &#125;</span><br><span class="line"><span class="keyword">const</span> app = Vue.createApp(RootComponent)</span><br><span class="line"><span class="keyword">const</span> vm = app.mount(<span class="string">&#x27;#app&#x27;</span>)</span><br></pre></td></tr></table></figure><h3 id="组件实例-property"><a href="#组件实例-property" class="headerlink" title="组件实例 property"></a>组件实例 property</h3><p>在<code>data</code>中定义的<code>property</code>是通过组件实例暴露的：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> app = Vue.createApp(&#123;</span><br><span class="line">  data () &#123;</span><br><span class="line">    count: <span class="number">1</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;)</span><br><span class="line"><span class="keyword">const</span> vm = app.mount(<span class="string">&#x27;#app&#x27;</span>)</span><br><span class="line"><span class="built_in">console</span>.log(vm.count) <span class="comment">// =&gt; 1</span></span><br></pre></td></tr></table></figure><p>可以将用户定义的<code>property</code>添加到组件实例中，例如<code>methods</code>，<code>props</code>，<code>computed</code>，<code>inject</code>和<code>setup</code>。<br>Vue还通过组件实例暴露了一些<code>内置property</code>，如<code>$attrs</code>和<code>$emit</code>。这些<code>property</code>都有一个<code>$</code>前缀，以避免与<code>用户定义的property</code>名冲突。</p><h3 id="生命周期钩子"><a href="#生命周期钩子" class="headerlink" title="生命周期钩子"></a>生命周期钩子</h3><ul><li>beforeCreate</li><li>created</li><li>beforeMount</li><li>mounted</li><li>beforeUpdate</li><li>updated</li><li>beforeUnmount</li><li>unmounted<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/vue3%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90.png" alt="vue3.0生命周期钩子"></li></ul><h2 id="常用指令"><a href="#常用指令" class="headerlink" title="常用指令"></a>常用指令</h2><p>指令 (Directives) 是带有<code>v-</code>前缀的特殊 attribute。</p><h3 id="v-once"><a href="#v-once" class="headerlink" title="v-once"></a>v-once</h3><p>不需要表达式，只渲染元素和组件一次。即：只要给元素或者组件添加了<code>v-once</code>指令，那么元素或者组件只会渲染一次，无论<code>组件实例中property的值</code>怎么改变，元素或者组件都不会被重新渲染。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span>插值：&#123;&#123; msg &#125;&#125;<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span>v-once插值：<span class="tag">&lt;<span class="name">span</span> <span class="attr">v-once</span>&gt;</span>&#123;&#123; msg &#125;&#125;<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">button</span> @<span class="attr">click</span>=<span class="string">&quot;changeMsg&quot;</span>&gt;</span>改值<span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript">  <span class="keyword">const</span> app = Vue.createApp(&#123;</span></span><br><span class="line">    data () &#123;</span><br><span class="line"><span class="javascript">      <span class="keyword">return</span> &#123;</span></span><br><span class="line"><span class="javascript">        msg: <span class="string">&#x27;插值&#x27;</span></span></span><br><span class="line">      &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    methods: &#123;</span><br><span class="line">      changeMsg () &#123;</span><br><span class="line"><span class="javascript">        <span class="built_in">this</span>.msg = <span class="string">&#x27;哈哈哈哈&#x27;</span></span></span><br><span class="line">      &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">  &#125;)</span><br><span class="line"><span class="javascript">  <span class="keyword">const</span> vm = app.mount(<span class="string">&#x27;#app&#x27;</span>)</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="v-html"><a href="#v-html" class="headerlink" title="v-html"></a>v-html</h3><p>更新元素的 innerHTML。<br><strong>注意：</strong>内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span> <span class="attr">v-html</span>=<span class="string">&quot;rawHtml&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript">  <span class="keyword">const</span> app = Vue.createApp(&#123;</span></span><br><span class="line">    data () &#123;</span><br><span class="line"><span class="javascript">      <span class="keyword">return</span> &#123;</span></span><br><span class="line"><span class="handlebars"><span class="xml">        rawHtml: &#x27;<span class="tag">&lt;<span class="name">strong</span>&gt;</span>哇哈哈哈<span class="tag">&lt;/<span class="name">strong</span>&gt;</span>&#x27;</span></span></span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;)</span><br><span class="line"><span class="javascript">  <span class="keyword">const</span> vm = app.mount(<span class="string">&#x27;#app&#x27;</span>)</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="v-bind"><a href="#v-bind" class="headerlink" title="v-bind"></a>v-bind</h3><p>动态地绑定一个或多个<code>attribute</code>，或一个组件<code>prop</code>到表达式。可以直接缩写<code>:</code><br>在绑定<code>class</code>或<code>style</code>attribute 时，支持其它类型的值，如<strong>数组或对象</strong>。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">v-bind:src</span>=<span class="string">&quot;imageSrc&quot;</span> /&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 缩写 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">:src</span>=<span class="string">&quot;imageSrc&quot;</span> /&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- class 绑定 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">:class</span>=<span class="string">&quot;&#123; red: isRed &#125;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">:class</span>=<span class="string">&quot;[classA, classB]&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="v-if"><a href="#v-if" class="headerlink" title="v-if"></a>v-if</h3><p>根据表达式的真假值来有条件地渲染元素。<br>当和<code>v-if</code>一起使用时，<code>v-for</code>的优先级比<code>v-if</code>更高。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-if</span>=<span class="string">&quot;flag&quot;</span>&gt;</span>你看见我了<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="v-else"><a href="#v-else" class="headerlink" title="v-else"></a>v-else</h3><p>前一兄弟元素必须有 v-if 或 v-else-if。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-if</span>=<span class="string">&quot;Math.random() &gt; 0.5&quot;</span>&gt;</span></span><br><span class="line">  Now you see me</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-else</span>&gt;</span></span><br><span class="line">  Now you don&#x27;t</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="v-else-if"><a href="#v-else-if" class="headerlink" title="v-else-if"></a>v-else-if</h3><p>前一兄弟元素必须有 v-if 或 v-else-if。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-if</span>=<span class="string">&quot;type === &#x27;A&#x27;&quot;</span>&gt;</span></span><br><span class="line">  A</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-else-if</span>=<span class="string">&quot;type === &#x27;B&#x27;&quot;</span>&gt;</span></span><br><span class="line">  B</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-else-if</span>=<span class="string">&quot;type === &#x27;C&#x27;&quot;</span>&gt;</span></span><br><span class="line">  C</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-else</span>&gt;</span></span><br><span class="line">  Not A/B/C</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="v-show"><a href="#v-show" class="headerlink" title="v-show"></a>v-show</h3><p>根据表达式的真假值，切换元素的<code>display CSS property</code>。<br>当条件变化时该指令触发过渡效果。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-show</span>&gt;</span>看见我了<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><p>与<code>v-if</code>的区别:</p><ul><li><code>v-if</code>是通过控制dom节点的存在与否来控制元素的显隐,对元素进行销毁和重建;</li><li><code>v-show</code>是通过设置DOM元素的<code>display</code>样式，block为显示，none为隐藏,简单地 CSS 对元素进行切换;</li><li><code>v-if</code>会使得页面重绘,<code>v-show</code>则只是是页面重排;<br>一般来说<code>v-if</code>有更高的切换开销,而<code>v-show</code>有较高的初始渲染开销,因此,如果需要非常频繁的切换,则试用<code>v-show</code>较好,如果在运行时条件很少改变,则使用用<code>v-show</code>较好</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="vue.js" scheme="https://jiuaiop.gitee.io/tags/vue-js/"/>
    
    <category term="vue3" scheme="https://jiuaiop.gitee.io/tags/vue3/"/>
    
  </entry>
  
  <entry>
    <title>vue3学习之路</title>
    <link href="https://jiuaiop.gitee.io/posts/fe1d76a0-1831-11eb-9a98-5927cf269e5c/"/>
    <id>https://jiuaiop.gitee.io/posts/fe1d76a0-1831-11eb-9a98-5927cf269e5c/</id>
    <published>2020-10-27T08:54:16.000Z</published>
    <updated>2020-10-27T08:54:16.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><blockquote><p>经过了漫长的迭代，Vue 3.0 终于在上 2020-09-18 发布了，带了翻天覆地的变化，使用了 Typescript 进行了大规模的重构，带来了 Composition API RFC 版本，类似 React Hook 一样的写 Vue，可以自定义自己的 hook ，让使用者更加的灵活，接下来我们就开始学习vue3.0。</p></blockquote><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>vue安装有如下三种方式：</p><ul><li>以 <a href="https://www.vue3js.cn/docs/zh/guide/installation.html#cdn">CDN package</a> 的形式导入，简而言之就是以<code>&lt;script&gt;</code>标签形式导入<br>  对于制作原型或学习，你可以这样使用最新版本  <figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;https://unpkg.com/vue@next&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure></li><li>使用<code>npm</code>安装<br>  在用 Vue 构建大型应用时推荐使用<code>npm</code>安装, <code>NPM</code>能很好地和诸如<code>Webpack</code>或<code>Browserify</code>模块打包器配合使用。同时<code>Vue</code>也提供配套工具来开发单文件组件。  <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> 最新稳定版</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> npm install vue@next</span></span><br></pre></td></tr></table></figure></li><li>使用官方的<code>CLI</code>来构建一个项目，它为现代前端工作流程提供了功能齐备的构建设置 (例如，热重载、保存时的提示等等)。<br>  Vue提供了一个官方的<a href="https://github.com/vuejs/vue-cli">CLI</a>，为单页面应用 (SPA) 快速搭建繁杂的脚手架。<br>  对于Vue3，你应该使用<code>npm</code>上可用的<code>Vue CLI v4.5</code>作为<code>@vue/cli@next</code>。要升级，你应该需要全局重新安装最新版本的 @vue/cli：  <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> yarn global add @vue/cli@next</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> OR</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> npm install -g @vue/cli@next</span></span><br></pre></td></tr></table></figure>  然后在 Vue 项目运行：  <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> vue upgrade --next</span></span><br></pre></td></tr></table></figure></li></ul><h2 id="Vite脚手架"><a href="#Vite脚手架" class="headerlink" title="Vite脚手架"></a>Vite脚手架</h2><p><a href="https://github.com/vitejs/vite">Vite</a> 是一个 web 开发构建工具，由于其原生 ES 模块导入方法，它允许快速提供代码。<br>通过在终端中运行以下命令，可以使用 Vite 快速构建 Vue 项目。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> npm</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> npm init vite-app &lt;project-name&gt;</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> <span class="built_in">cd</span> &lt;project-name&gt;</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> npm install</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> npm run dev</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> 或者 yarn</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> yarn create vite-app &lt;project-name&gt;</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> <span class="built_in">cd</span> &lt;project-name&gt;</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> yarn</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> yarn dev</span></span><br></pre></td></tr></table></figure><p>具体操作步骤如下：</p><ol><li>第一步：全局重新安装最新版本的 @vue/cli<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> npm install -g @vue/cli@next</span></span><br></pre></td></tr></table></figure></li><li>第二步：使用<code>vite</code>快速创建项目<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> npm init vite-app vite-demo1</span></span><br></pre></td></tr></table></figure><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/vite%E5%88%9B%E5%BB%BA%E5%BF%AB%E9%80%9F%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE1.jpg"></li><li>第三步：进入到项目下，并执行如下命令<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> <span class="built_in">cd</span> vite-demo1</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> npm install</span></span><br></pre></td></tr></table></figure><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/vite%E5%BF%AB%E9%80%9F%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE2.jpg"></li><li>第四步：然后使用<code>npm run dev</code>运行项目<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/vite%E5%BF%AB%E9%80%9F%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE3.jpg"></li><li>第五步：在浏览地地址栏输入<code>localhost:3000</code>，出现如下效果<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/vite%E5%BF%AB%E9%80%9F%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE4.jpg"><br>至此使用<code>vite</code>创建项目完成。</li></ol><h2 id="Vue-cli脚手架快速创建项目"><a href="#Vue-cli脚手架快速创建项目" class="headerlink" title="Vue-cli脚手架快速创建项目"></a>Vue-cli脚手架快速创建项目</h2><p>使用<code>vue-cli</code>脚手架快速创建项目，需要执行如下几步：</p><ol><li>第一步：全局重新安装最新版本的 @vue/cli<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> npm install -g @vue/cli</span></span><br></pre></td></tr></table></figure></li><li>第二步：创建项目<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> vue create cli-demo</span></span><br></pre></td></tr></table></figure><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/cli%E5%BF%AB%E9%80%9F%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE1.jpg"><br>选择**Default (Vue 3 preview) ([Vue 3] babel, eslint)**，然后回车</li></ol><h2 id="快速入门"><a href="#快速入门" class="headerlink" title="快速入门"></a>快速入门</h2><h3 id="声明式渲染"><a href="#声明式渲染" class="headerlink" title="声明式渲染"></a>声明式渲染</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;app&quot;</span>&gt;</span></span><br><span class="line">Counter: &#123;&#123; counter &#125;&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">Vue.createApp(&#123;</span><br><span class="line">data() &#123;</span><br><span class="line">    <span class="keyword">return</span> &#123;</span><br><span class="line">      counter: <span class="number">0</span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;).mount(<span class="string">&#x27;#app&#x27;</span>)</span><br></pre></td></tr></table></figure><p>这样我们就创建了一个<code>vue</code>项目，请看下面实例：count 每秒自动递增</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">Vue.createApp(&#123;</span><br><span class="line">data() &#123;</span><br><span class="line">    <span class="keyword">return</span> &#123;</span><br><span class="line">      counter: <span class="number">0</span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">mounted () &#123;</span><br><span class="line"><span class="built_in">setInterval</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">      <span class="built_in">this</span>.counter++</span><br><span class="line">    &#125;, <span class="number">1000</span>)</span><br><span class="line">&#125;</span><br><span class="line">&#125;).mount(<span class="string">&#x27;#app&#x27;</span>)</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="vue.js" scheme="https://jiuaiop.gitee.io/tags/vue-js/"/>
    
    <category term="vue3" scheme="https://jiuaiop.gitee.io/tags/vue3/"/>
    
  </entry>
  
  <entry>
    <title>typescript学习</title>
    <link href="https://jiuaiop.gitee.io/posts/324862d0-0ebb-11eb-8f8a-0f68a72efc71/"/>
    <id>https://jiuaiop.gitee.io/posts/324862d0-0ebb-11eb-8f8a-0f68a72efc71/</id>
    <published>2020-10-15T07:51:13.000Z</published>
    <updated>2020-10-15T07:51:13.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="基础类型"><a href="#基础类型" class="headerlink" title="基础类型"></a>基础类型</h2><h3 id="布尔值-boolean"><a href="#布尔值-boolean" class="headerlink" title="布尔值 boolean"></a>布尔值 boolean</h3><p>最基本的数据类型就是简单的<code>true/false</code>值，在JavaScript和TypeScript里叫做<code>boolean</code></p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> flag: <span class="built_in">boolean</span> = <span class="literal">false</span>;</span><br></pre></td></tr></table></figure><h3 id="数字-number"><a href="#数字-number" class="headerlink" title="数字 number"></a>数字 number</h3><p>和JavaScript一样，TypeScript里的所有数字都是浮点数。 这些浮点数的类型是<code>number</code>。</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> num1: <span class="built_in">number</span> = <span class="number">6</span> <span class="comment">// 十进制</span></span><br><span class="line"><span class="keyword">let</span> num2: <span class="built_in">number</span> = <span class="number">0xf00d</span> <span class="comment">// 十六进制</span></span><br><span class="line"><span class="keyword">let</span> num3: <span class="built_in">number</span> = <span class="number">0b1010</span> <span class="comment">// ES6的二进制</span></span><br><span class="line"><span class="keyword">let</span> num4: <span class="built_in">number</span> = <span class="number">0o744</span> <span class="comment">// ES6的八进制</span></span><br></pre></td></tr></table></figure><h3 id="字符串-string"><a href="#字符串-string" class="headerlink" title="字符串 string"></a>字符串 string</h3><p>和JavaScript一样，可以使用双引号<code>&quot;</code>或单引号<code>&#39;</code>表示字符串。</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> str: <span class="built_in">string</span> = <span class="string">&#x27;hello typescript&#x27;</span></span><br><span class="line">str = <span class="string">&#x27;hello world&#x27;</span></span><br></pre></td></tr></table></figure><p>还可以使用模板字符串</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> fullname: <span class="built_in">string</span> = <span class="string">&#x27;张三&#x27;</span></span><br><span class="line"><span class="keyword">let</span> age: <span class="built_in">number</span> = <span class="number">24</span></span><br><span class="line"><span class="keyword">let</span> sentence: <span class="built_in">string</span> = <span class="string">`hello! my name is <span class="subst">$&#123;fullname&#125;</span>, I am <span class="subst">$&#123;age&#125;</span> years old`</span></span><br><span class="line"><span class="comment">// 使用 tsc 转换后的结果</span></span><br><span class="line"><span class="keyword">var</span> fullname = <span class="string">&#x27;张三&#x27;</span>;</span><br><span class="line"><span class="keyword">var</span> age = <span class="number">24</span>;</span><br><span class="line"><span class="keyword">var</span> sentence = <span class="string">&quot;hello! my name is &quot;</span> + fullname + <span class="string">&quot;, I am &quot;</span> + age + <span class="string">&quot; years old&quot;</span>;</span><br></pre></td></tr></table></figure><h3 id="数组"><a href="#数组" class="headerlink" title="数组"></a>数组</h3><p>有两种方式可以定义数组。<br><strong>第一种</strong>：可以在元素类型后面接上<code>[]</code>，表示由此类型元素组成的一个数组：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> arr1: <span class="built_in">number</span>[] = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br><span class="line"><span class="comment">// 使用 tsc 命令转换后的结果</span></span><br><span class="line"><span class="keyword">var</span> arr1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br></pre></td></tr></table></figure><p><strong>第一种</strong>：使用数组泛型，<code>Array&lt;元素类型&gt;</code>：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> arr2: <span class="built_in">Array</span>&lt;<span class="built_in">number</span>&gt; = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br><span class="line"><span class="comment">// 使用 tsc 命令转换后的结果</span></span><br><span class="line"><span class="keyword">var</span> arr2 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br></pre></td></tr></table></figure><h3 id="元组-Tuple"><a href="#元组-Tuple" class="headerlink" title="元组 Tuple"></a>元组 Tuple</h3><p>元组类型允许表示一个已知元素数量和类型的数组，各元素的类型不必相同。<br>如：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> tuple1: [<span class="built_in">string</span>, <span class="built_in">number</span>]</span><br><span class="line">tuple1 = [<span class="string">&#x27;haha&#x27;</span>, <span class="number">23</span>] <span class="comment">// ok</span></span><br><span class="line">tuple1 = [<span class="number">23</span>, <span class="string">&#x27;haha&#x27;</span>] <span class="comment">// Error</span></span><br></pre></td></tr></table></figure><h3 id="枚举"><a href="#枚举" class="headerlink" title="枚举"></a>枚举</h3><p><code>enum</code>类型是对JavaScript标准数据类型的一个补充。</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">enum</span> Color &#123;Red, Green, Blue&#125;</span><br><span class="line"><span class="keyword">let</span> c: Color = Color.Green</span><br></pre></td></tr></table></figure><p>默认情况下，从<code>0</code>开始为元素编号。即上面的<code>Red=0, Green=1, Blue=2</code>，所以此时<code>c = 1</code>。<br>可以手动的指定成员的数值，如：将上面的例子改成从<code>1</code>开始编号：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">enum</span> Color &#123;Red = <span class="number">1</span>, Green, Blue&#125;</span><br><span class="line"><span class="keyword">let</span> c: Color = Color.Green</span><br></pre></td></tr></table></figure><p>或者，全部都采用手动赋值：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">enum</span> Color &#123;Red = <span class="number">1</span>, Green = <span class="number">4</span>, Blue = <span class="number">8</span>&#125;</span><br><span class="line"><span class="keyword">let</span> c: Color = Color.Green</span><br></pre></td></tr></table></figure><p><strong>注意</strong>：枚举类型提供的一个<code>便利</code>是你可以由枚举的值得到它的名字。</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">enum</span> Color &#123;Red = <span class="number">1</span>, Green = <span class="number">2</span>, Blue = <span class="number">4</span>&#125;</span><br><span class="line"><span class="keyword">let</span> cName: <span class="built_in">string</span> = Color[<span class="number">2</span>]</span><br><span class="line"><span class="built_in">console</span>.log(cName)  <span class="comment">// Green</span></span><br></pre></td></tr></table></figure><h3 id="Any"><a href="#Any" class="headerlink" title="Any"></a>Any</h3><p>有时候在编程阶段还不清楚变量的类型，这种情况下，我们不希望<strong>类型检查器</strong>对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用 <code>any</code>类型来标记这些变量：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> notSure: <span class="built_in">any</span> = <span class="number">4</span></span><br><span class="line">notSure = <span class="literal">false</span></span><br><span class="line">notSure = <span class="string">&#x27;哈哈哈&#x27;</span></span><br><span class="line">notSure.ifItExists() <span class="comment">// ok</span></span><br><span class="line">notSure.toFixed() <span class="comment">// ok</span></span><br></pre></td></tr></table></figure><h3 id="Void"><a href="#Void" class="headerlink" title="Void"></a>Void</h3><p>某种程度上来说，<code>void</code>类型像是与<code>any</code>类型相反，它表示没有任何类型。 当一个函数没有返回值时，你通常会见到其返回值类型是<code>void</code>：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">test</span>(<span class="params"></span>): <span class="title">void</span> </span>&#123;</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&quot;This is my warning message&quot;</span>)</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>声明一个<code>void</code>类型的变量没有什么大用，因为你只能为它赋予<code>undefined和null</code>：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> unusable: <span class="built_in">void</span> = <span class="literal">undefined</span></span><br></pre></td></tr></table></figure><h3 id="Null-和-Undefined"><a href="#Null-和-Undefined" class="headerlink" title="Null 和 Undefined"></a>Null 和 Undefined</h3><p>TypeScript里，<code>undefined</code>和<code>null</code>两者各自有自己的类型分别叫做<code>undefined</code>和<code>null</code>。 和<code>void</code>相似，它们的本身的类型用处不是很大：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> u: <span class="literal">undefined</span> = <span class="literal">undefined</span></span><br><span class="line"><span class="keyword">let</span> n: <span class="literal">null</span> = <span class="literal">null</span></span><br></pre></td></tr></table></figure><p>默认情况下<code>null和undefined</code>是所有类型的子类型。 就是说你可以把<code>null和undefined</code>赋值给<code>number</code>类型的变量。</p><h3 id="Never"><a href="#Never" class="headerlink" title="Never"></a>Never</h3><p><code>never</code>类型表示的是那些永不存在的值的类型。<br>例如: <code>never</code>类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型； 变量也可能是<code>never</code>类型，当它们被永不为真的类型保护所约束时。<br><code>never</code>类型是任何类型的子类型，也可以赋值给任何类型；然而，没有类型是<code>never</code>的子类型或可以赋值给<code>never</code>类型（除了<code>never</code>本身之外）。 即使<code>any</code>也不可以赋值给<code>never</code>。<br>下面是一些返回never类型的函数：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 返回never的函数必须存在无法达到的终点</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">error</span>(<span class="params">message: <span class="built_in">string</span></span>): <span class="title">never</span> </span>&#123;</span><br><span class="line">  <span class="keyword">throw</span> <span class="keyword">new</span> <span class="built_in">Error</span>(message);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 推断的返回值类型为never</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">fail</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">  <span class="keyword">return</span> error(<span class="string">&quot;Something failed&quot;</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 返回never的函数必须存在无法达到的终点</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">infiniteLoop</span>(<span class="params"></span>): <span class="title">never</span> </span>&#123;</span><br><span class="line">  <span class="keyword">while</span> (<span class="literal">true</span>) &#123;&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="教程" scheme="https://jiuaiop.gitee.io/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="typescript" scheme="https://jiuaiop.gitee.io/tags/typescript/"/>
    
    <category term="指南" scheme="https://jiuaiop.gitee.io/tags/%E6%8C%87%E5%8D%97/"/>
    
  </entry>
  
  <entry>
    <title>Deno学习之路(一)之环境搭建和快速创建项目</title>
    <link href="https://jiuaiop.gitee.io/posts/666a7610-0def-11eb-a127-f1b6573612a5/"/>
    <id>https://jiuaiop.gitee.io/posts/666a7610-0def-11eb-a127-f1b6573612a5/</id>
    <published>2020-10-14T07:32:23.000Z</published>
    <updated>2020-10-14T07:32:23.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="Deno是什么？"><a href="#Deno是什么？" class="headerlink" title="Deno是什么？"></a>Deno是什么？</h2><div class="note default simple">            <p>Deno 是一个简单、现代且安全的 JavaScript 和 TypeScript 运行时环境，其基于 V8 引擎并采用 Rust 编程语言构建。<br>官网：<a href="https://www.denojs.cn/">https://www.denojs.cn/</a></p>          </div><h2 id="安装Deno"><a href="#安装Deno" class="headerlink" title="安装Deno"></a>安装Deno</h2>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="deno" scheme="https://jiuaiop.gitee.io/tags/deno/"/>
    
  </entry>
  
  <entry>
    <title>typescript学习之路(一)之环境搭建</title>
    <link href="https://jiuaiop.gitee.io/posts/d77245a0-0dee-11eb-83d2-070c3258ed4f/"/>
    <id>https://jiuaiop.gitee.io/posts/d77245a0-0dee-11eb-83d2-070c3258ed4f/</id>
    <published>2020-10-14T07:28:23.000Z</published>
    <updated>2020-10-14T07:28:23.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="Typescript是什么？"><a href="#Typescript是什么？" class="headerlink" title="Typescript是什么？"></a>Typescript是什么？</h2><div class="note default simple">            <p>TypeScript是JavaScript类型的超集，它可以编译成纯JavaScript。<br>TypeScript可以在任何浏览器、任何计算机和任何操作系统上运行，并且是开源的。<br>官网：<a href="https://www.tslang.cn/">https://www.tslang.cn/</a></p>          </div><h2 id="安装Typescript"><a href="#安装Typescript" class="headerlink" title="安装Typescript"></a>安装Typescript</h2><p>有两种主要的方式来获取TypeScript工具：</p><ul><li>通过npm（Node.js包管理器）</li><li>安装Visual Studio的TypeScript插件</li></ul><p>针对使用npm的用户：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g typescript</span><br></pre></td></tr></table></figure><p>查看是否安装成功：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tsc -v # tsc --version</span><br></pre></td></tr></table></figure><p>查看Typescript命令帮助：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tsc -h # tsc --help</span><br></pre></td></tr></table></figure><h2 id="构建第一个-Typescript-文件"><a href="#构建第一个-Typescript-文件" class="headerlink" title="构建第一个 Typescript 文件"></a>构建第一个 Typescript 文件</h2><p>在编辑器，新建<code>greeter.ts</code>文件并写入如下内容：</p><figure class="highlight ts"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">greeter</span>(<span class="params">person</span>) </span>&#123;</span><br><span class="line">  <span class="keyword">return</span> <span class="string">&quot;Hello, &quot;</span> + person</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">let</span> user = <span class="string">&quot;Jane User&quot;</span></span><br><span class="line"><span class="built_in">document</span>.body.innerHTML = greeter(user)</span><br></pre></td></tr></table></figure><h2 id="编译代码"><a href="#编译代码" class="headerlink" title="编译代码"></a>编译代码</h2><p>在命令行上，运行TypeScript编译器：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tsc greeter.ts</span><br></pre></td></tr></table></figure><p>输出结果为一个<code>greeter.js</code>文件，它包含了和输入文件中相同的JavsScript代码。然后就可以运行typescript生成的JavaScript代码了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="https://jiuaiop.gitee.io/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="typescript" scheme="https://jiuaiop.gitee.io/tags/typescript/"/>
    
  </entry>
  
  <entry>
    <title>electron学习之路(一)之环境搭建和快速创建项目</title>
    <link href="https://jiuaiop.gitee.io/posts/b0454160-0de6-11eb-b617-1783d9490e65/"/>
    <id>https://jiuaiop.gitee.io/posts/b0454160-0de6-11eb-b617-1783d9490e65/</id>
    <published>2020-10-14T06:30:01.000Z</published>
    <updated>2020-10-14T06:30:01.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="electron是什么"><a href="#electron是什么" class="headerlink" title="electron是什么?"></a>electron是什么?</h2><div class="note default simple">            <p>使用 JavaScript，HTML 和 CSS 构建跨平台的桌面应用程序<br>官网：<a href="http://www.electronjs.org/">http://www.electronjs.org/</a></p>          </div><h2 id="环境搭建"><a href="#环境搭建" class="headerlink" title="环境搭建"></a>环境搭建</h2><p>使用原生的<code>Node.js</code>开发环境来开发<code>Electron应用</code>。 为了打造一个Electron桌面程序的开发环境，只需要安装好<code>Node.js</code>、<code>npm</code>、一个顺手的代码编辑器以及对你的操作系统命令行客户端有基本了解。</p><h2 id="创建第一个electron应用"><a href="#创建第一个electron应用" class="headerlink" title="创建第一个electron应用"></a>创建第一个electron应用</h2><p>Electron 可以让你使用纯 JavaScript 调用丰富的原生(操作系统) APIs 来创造桌面应用。 你可以把它看作一个 Node. js 的变体，它专注于桌面应用而不是 Web 服务器端。<br>从开发的角度来看, Electron application 本质上是一个 Node. js 应用程序。 与 Node.js 模块相同，应用的入口是 package.json 文件。 一个最基本的 Electron 应用一般来说会有如下的目录结构：</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">your-app&#x2F;</span><br><span class="line"> |- package.json</span><br><span class="line"> |- index.js</span><br><span class="line"> |- index.html</span><br></pre></td></tr></table></figure><h2 id="创建项目"><a href="#创建项目" class="headerlink" title="创建项目"></a>创建项目</h2><h3 id="创建项目空文件夹以及基本配置"><a href="#创建项目空文件夹以及基本配置" class="headerlink" title="创建项目空文件夹以及基本配置"></a>创建项目空文件夹以及基本配置</h3><p>首先为项目创建空文件夹<code>electron-demo</code>，然后在命令行输入如下命令：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cd electron-demo</span><br><span class="line">npm init</span><br></pre></td></tr></table></figure><p>然后一直回车到底，或者将<code>npm init</code>替换成<code>npm init -y</code>快速初始化。</p><h3 id="配置启动命令"><a href="#配置启动命令" class="headerlink" title="配置启动命令"></a>配置启动命令</h3><p>在上一步执行完成后会在<code>electron-demo</code>目录下创建<code>package.json</code>文件，修改<code>package.json</code>文件：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="attr">&quot;name&quot;</span>: <span class="string">&quot;electron-demo&quot;</span>,</span><br><span class="line">  <span class="attr">&quot;version&quot;</span>: <span class="string">&quot;1.0.0&quot;</span>,</span><br><span class="line">  <span class="attr">&quot;description&quot;</span>: <span class="string">&quot;&quot;</span>,</span><br><span class="line">  <span class="attr">&quot;main&quot;</span>: <span class="string">&quot;index.js&quot;</span>,</span><br><span class="line">  <span class="attr">&quot;scripts&quot;</span>: &#123;</span><br><span class="line">    <span class="attr">&quot;test&quot;</span>: <span class="string">&quot;echo \&quot;Error: no test specified\&quot; &amp;&amp; exit 1&quot;</span>,</span><br><span class="line">    <span class="attr">&quot;start&quot;</span>: <span class="string">&quot;electron .&quot;</span> <span class="comment">// 启动项</span></span><br><span class="line">  &#125;,</span><br><span class="line">  <span class="attr">&quot;author&quot;</span>: <span class="string">&quot;&quot;</span>,</span><br><span class="line">  <span class="attr">&quot;license&quot;</span>: <span class="string">&quot;ISC&quot;</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>配置好后，后期就可以直接在命令行输入：<code>npm run start</code>即可运行项目。</p><h3 id="安装-Electron"><a href="#安装-Electron" class="headerlink" title="安装 Electron"></a>安装 Electron</h3><p>在<code>electron-demo</code>命令行下输入如下命令进行安装<code>electron</code>：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm i electron -S</span><br></pre></td></tr></table></figure><h3 id="开发"><a href="#开发" class="headerlink" title="开发"></a>开发</h3><p>Electron apps 使用JavaScript开发，其工作原理和方法与Node.js 开发相同。 electron模块包含了Electron提供的所有API和功能，引入方法和普通Node.js模块一样。<br>在<code>electron-demo</code>下新建<code>index.js</code>，然后引入<code>electron</code>：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> electron = <span class="built_in">require</span>(<span class="string">&#x27;electron&#x27;</span>)</span><br></pre></td></tr></table></figure><p><code>electron</code> 模块所提供的功能都是通过命名空间暴露出来的。 比如说： <code>electron.app</code>负责管理<code>Electron</code> 应用程序的生命周期， <code>electron.BrowserWindow</code>类负责创建窗口。<br>下面是一个简单的<code>index.js</code>文件，它将在应用程序准备就绪后打开一个窗口：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> &#123; app, BrowserWindow &#125; = <span class="built_in">require</span>(<span class="string">&#x27;electron&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">createWindow</span> (<span class="params"></span>) </span>&#123;   </span><br><span class="line">  <span class="comment">// 创建浏览器窗口</span></span><br><span class="line">  <span class="keyword">const</span> win = <span class="keyword">new</span> BrowserWindow(&#123;</span><br><span class="line">    width: <span class="number">800</span>,</span><br><span class="line">    height: <span class="number">600</span>,</span><br><span class="line">    webPreferences: &#123;</span><br><span class="line">      nodeIntegration: <span class="literal">true</span></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;)</span><br><span class="line">  <span class="comment">// 并且为你的应用加载index.html</span></span><br><span class="line">  win.loadFile(<span class="string">&#x27;index.html&#x27;</span>)</span><br><span class="line">&#125;</span><br><span class="line">app.whenReady().then(createWindow)</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="https://jiuaiop.gitee.io/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="Node.js" scheme="https://jiuaiop.gitee.io/tags/Node-js/"/>
    
    <category term="electron" scheme="https://jiuaiop.gitee.io/tags/electron/"/>
    
    <category term="桌面应用程序" scheme="https://jiuaiop.gitee.io/tags/%E6%A1%8C%E9%9D%A2%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/"/>
    
  </entry>
  
  <entry>
    <title>weex学习之路(一)之环境搭建和快速创建项目</title>
    <link href="https://jiuaiop.gitee.io/posts/2d08fd40-0dce-11eb-b7a3-99b99f39a188/"/>
    <id>https://jiuaiop.gitee.io/posts/2d08fd40-0dce-11eb-b7a3-99b99f39a188/</id>
    <published>2020-10-14T03:34:33.000Z</published>
    <updated>2020-10-14T03:34:33.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="weex是什么"><a href="#weex是什么" class="headerlink" title="weex是什么?"></a>weex是什么?</h2><div class="note default simple">            <p><code>Weex</code> 是使用流行的 Web 开发体验来开发高性能原生应用的框架。<br>“Weex” 的发音是 /wiːks/, 和 “Weeks” 同音。<br><code>weex</code>是阿里开源的一款类似<code>react-native</code>的使用js开发客户端的框架,<code>weex</code>可是认为是<code>vue-native</code>。阿里有另外一个<code>rax</code>框架是类似<code>react</code>的的框架 语法和api基本相同，也支持jsx。<br>weex官网：<a href="https://weex.apache.org/zh/">https://weex.apache.org/zh/</a><br>vue官网：<a href="https://cn.vuejs.org/">https://cn.vuejs.org/</a><br>rax官网：<a href="https://alibaba.github.io/rax/">https://alibaba.github.io/rax/</a></p>          </div><h2 id="开发环境配置"><a href="#开发环境配置" class="headerlink" title="开发环境配置"></a>开发环境配置</h2><p><code>Weex</code> 官方提供了weex-cli 的脚手架工具来辅助开发和调试。<br>首先需要安装<code>Node.js</code>和<a href="https://github.com/apache/incubator-weex-cli?spm=a2c7j.-zh-guide-develop-setup-develop-environment.0.0.17041a8eIfoQkT"><code>Weex Cli</code></a><br>安装好<code>Node.js</code>后，就可以直接使用 <code>npm</code> 来安装 <code>weex-toolkit</code>, 你也可以通过 <code>yarn</code> 来进行安装。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm i weex-toolkit -g</span><br></pre></td></tr></table></figure><p>安装结束后你可以直接使用 <code>weex help</code> 命令验证是否安装成功，它会显示 <code>weex</code> 支持的所有指令，同时，你也可以通过 <code>weex doctor</code> 命令检查你的本地开发环境。</p><h2 id="快速创建项目"><a href="#快速创建项目" class="headerlink" title="快速创建项目"></a>快速创建项目</h2><h3 id="初始化项目"><a href="#初始化项目" class="headerlink" title="初始化项目"></a>初始化项目</h3><p>然后初始化 Weex 项目：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">weex create 项目名称</span><br><span class="line">weex create weex-demo</span><br></pre></td></tr></table></figure><p>执行完命令后，在 <code>weex-demo</code> 目录中已经为我们生成了标准项目结构。</p><h3 id="运行项目"><a href="#运行项目" class="headerlink" title="运行项目"></a>运行项目</h3><p>进入项目所在路径，如果你在生成项目的时候选择了<code>自动安装依赖</code>，在进入项目后只需直接运行 <code>npm start</code> 就可以将项目完整跑起来，否则，你需要预先在项目中运行一下 <code>npm install</code> 安装项目所需依赖。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cd weex-demo</span><br><span class="line">npm install # 这一步如果在创建项目时选择了自动安装依赖，就跳过</span><br><span class="line">npm start</span><br></pre></td></tr></table></figure><p>然后工具会启动一个本地的 <code>web</code> 服务，监听 <code>8081</code> 端口。你可以打开 <code>http://localhost:8081</code> 查看页面在 Web 下的渲染效果。 源代码在 <code>src/</code> 目录中，你可以像一个普通的 <code>Vue.js</code> 项目一样来开发.<br>除此之外，你还可以打开 <code>http://localhost:8081/preview.html</code> 开启一个预览页面，它会把 web 端的页面放在一个 iframe 中渲染，而且在右侧生成一个二维码。用 <a href="https://weex.apache.org/zh/guide/playground.html?spm=a2c7j.-zh-guide-develop-create-a-new-app.0.0.167c2a18mN3Gak"><code>Weex playground app</code></a> 扫描这个二维码可以看到页面在手机上渲染的真实效果。</p><h3 id="编译"><a href="#编译" class="headerlink" title="编译"></a>编译</h3><p>默认情况下 <code>weex create</code> 命令并不初始化 <code>iOS</code> 和 <code>Android</code> 项目，你可以通过执行 <code>weex platform add</code> 来添加特定平台的项目。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">weex platform add ios # ios</span><br><span class="line">weex platform add android # android</span><br></pre></td></tr></table></figure><p>为了能在本地机器上打开 <code>Android</code> 和 <code>iOS</code> 项目，你应该配置好客户端的开发环境。对于 <code>iOS</code>，你应该安装并且配置好 <a href="https://developer.apple.com/xcode/?spm=a2c7j.-zh-guide-develop-create-a-new-app.0.0.167c2a18mN3Gak"><code>Xcode</code></a>。对于 <code>Android</code>，你应该安装并且配置好 <a href="https://developer.android.com/studio/index.html?spm=a2c7j.-zh-guide-develop-create-a-new-app.0.0.167c2a18mN3Gak"><code>Android Studio</code></a>。当开发环境准备就绪后，运行下面的命令，可以在模拟器或真实设备上启动应用：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">weex run ios</span><br><span class="line">weex run android</span><br><span class="line">weex run web</span><br></pre></td></tr></table></figure><h3 id="调试"><a href="#调试" class="headerlink" title="调试"></a>调试</h3><p><code>weex-toolkit</code> 还提供了强大的调试功能，只需要执行：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">weex debug</span><br></pre></td></tr></table></figure><p>这条命令会启动一个调试服务，并且在 Chrome （目前只支持基于 V8 引擎的桌面浏览器） 中打开调试页面。详细用法请参考 <a href="https://weex.apache.org/zh/guide/develop/weex_cli.html?spm=a2c7j.-zh-guide-develop-create-a-new-app.0.0.167c2a18mN3Gak">weex-toolkit</a> 的文档。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="typescript" scheme="/tags/typescript/"/>
    
    <category term="vue.js" scheme="/tags/vue-js/"/>
    
    <category term="weex" scheme="/tags/weex/"/>
    
    <category term="前端框架" scheme="/tags/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/"/>
    
    <category term="小程序" scheme="/tags/%E5%B0%8F%E7%A8%8B%E5%BA%8F/"/>
    
  </entry>
  
  <entry>
    <title>基于Promise封装自己的Ajax库</title>
    <link href="https://jiuaiop.gitee.io/posts/92b5f100-0218-11eb-9a87-f1343616adab/"/>
    <id>https://jiuaiop.gitee.io/posts/92b5f100-0218-11eb-9a87-f1343616adab/</id>
    <published>2020-09-29T05:56:00.000Z</published>
    <updated>2020-09-29T05:56:52.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="哈哈哈"><a href="#哈哈哈" class="headerlink" title="哈哈哈"></a>哈哈哈</h1>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="web前端" scheme="https://jiuaiop.gitee.io/categories/web%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="Promise" scheme="https://jiuaiop.gitee.io/tags/Promise/"/>
    
    <category term="XMLHttpRequest" scheme="https://jiuaiop.gitee.io/tags/XMLHttpRequest/"/>
    
    <category term="Ajax" scheme="https://jiuaiop.gitee.io/tags/Ajax/"/>
    
    <category term="封装" scheme="https://jiuaiop.gitee.io/tags/%E5%B0%81%E8%A3%85/"/>
    
  </entry>
  
  <entry>
    <title>Git配置rsa公钥秘钥</title>
    <link href="https://jiuaiop.gitee.io/posts/4bbed010-f98e-11ea-8b21-71273ce4fbc1f9b/"/>
    <id>https://jiuaiop.gitee.io/posts/4bbed010-f98e-11ea-8b21-71273ce4fbc1f9b/</id>
    <published>2020-09-18T09:04:00.000Z</published>
    <updated>2020-09-18T09:04:52.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="gitee配置rsa公钥密钥"><a href="#gitee配置rsa公钥密钥" class="headerlink" title="gitee配置rsa公钥密钥"></a>gitee配置rsa公钥密钥</h2><p>参考：<a href="https://blog.csdn.net/liyanpig/article/details/105879263">https://blog.csdn.net/liyanpig/article/details/105879263</a></p><ol><li>在本地命令行输入：<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;xxxxx@xxxxx.com&quot;</span><br></pre></td></tr></table></figure></li><li></li></ol><h2 id="Github配置rsa公钥秘钥"><a href="#Github配置rsa公钥秘钥" class="headerlink" title="Github配置rsa公钥秘钥"></a>Github配置rsa公钥秘钥</h2>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="Git配置" scheme="https://jiuaiop.gitee.io/categories/Git%E9%85%8D%E7%BD%AE/"/>
    
    
    <category term="Gitee" scheme="https://jiuaiop.gitee.io/tags/Gitee/"/>
    
    <category term="Github" scheme="https://jiuaiop.gitee.io/tags/Github/"/>
    
    <category term="公钥" scheme="https://jiuaiop.gitee.io/tags/%E5%85%AC%E9%92%A5/"/>
    
    <category term="秘钥" scheme="https://jiuaiop.gitee.io/tags/%E7%A7%98%E9%92%A5/"/>
    
    <category term="rsa" scheme="https://jiuaiop.gitee.io/tags/rsa/"/>
    
  </entry>
  
  <entry>
    <title>Hexo添加发布说说功能</title>
    <link href="https://jiuaiop.gitee.io/posts/c370d840-f7e7-11ea-9a66-9918b66381d4/"/>
    <id>https://jiuaiop.gitee.io/posts/c370d840-f7e7-11ea-9a66-9918b66381d4/</id>
    <published>2020-09-16T06:42:17.000Z</published>
    <updated>2020-09-16T06:42:17.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><p>发表<code>说说/动态</code>功能是使用的<code>artitalk.js</code>，<a href="https://artitalk.js.org/doc.html">官网</a></p><h2 id="准备"><a href="#准备" class="headerlink" title="准备"></a>准备</h2><div class="note default">            <p>建议使用国际版的LeanCloud<br>因为国际版的leancloud不需要配置serverurl，所以推荐使用国际版，速度没有区别，如果使用国内版的leancloud别忘了填写serverurl即可</p>          </div><ol><li>前往 <a href="https://leancloud.app/">LeanCloud 国际版</a>，注册账号。</li><li>注册完成之后根据 LeanCloud 的提示绑定手机号和邮箱。</li><li>绑定完成之后点击创建应用，应用名称随意，接着在<code>结构化数据</code>中创建 <code>class</code>，命名为 <code>shuoshuo</code>。</li><li>在你新建的应用中找到<code>结构化数据</code>下的<code>用户</code>。点击<code>添加用户</code>，输入想用的<code>用户名及密码</code>。</li><li>回到<code>结构化数据</code>中，点击 <code>class</code> 下的 <code>shuoshuo</code>。找到权限，在 Class 访问权限中将 <code>add_fields</code> 以及 <code>create</code> 权限设置为指定用户，输入你刚才输入的用户名会自动匹配。为了安全起见，将 <code>delete</code> 和 <code>update</code> 也设置为跟它们一样的权限。</li><li>然后新建一个名为<code>atComment</code>的<code>class</code>，权限什么的使用默认的即可。</li><li>点击 <code>class</code> 下的 <code>_User</code> 添加列，列名称为 <code>img</code>，<code>默认值</code>填上你这个账号想要用的发布<code>说说的头像url</code>，这一项不进行配置，说说头像会显示为默认头像 —— Artitalk 的 logo。</li><li>在菜单栏中找到<code>设置-&gt; 应用 keys</code>，记下来 <code>AppID</code> 和 <code>AppKey</code> ，一会会用。</li><li>最后将 <code>_User</code> 中的权限全部调为指定用户，或者数据创建者，为了保证不被篡改用户数据已达到强制发布说说。</li></ol><h2 id="开始使用"><a href="#开始使用" class="headerlink" title="开始使用"></a>开始使用</h2><p>使用<code>hexo new page 名称</code>创建一个说说页面，如：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo new page shuoshuo</span><br></pre></td></tr></table></figure><p>然后在<code>shuoshuo/index.md</code>中添加如下代码：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span> <span class="attr">src</span>=<span class="string">&quot;https://unpkg.com/artitalk&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;artitalk_main&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span> // 存放说说列表的容器</span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="javascript">  <span class="keyword">new</span> Artitalk(&#123;</span></span><br><span class="line"><span class="javascript">    appId: <span class="string">&#x27;lMd0eLhIQPpENoI7ScrQSa63-MdYXbMMI&#x27;</span>,</span></span><br><span class="line"><span class="javascript">    appKey: <span class="string">&#x27;3tOgjMl6MmfupNrqfFHTnHhm&#x27;</span></span></span><br><span class="line">  &#125;)</span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>至此就已经实现了发布说说的功能。<br><img src= "/img/loading.gif" data-lazy-src="https://cdn.jsdelivr.net/gh/helinghands/cdn/img/hexo%E6%B7%BB%E5%8A%A0%E5%8F%91%E5%B8%83%E8%AF%B4%E8%AF%B4%E5%8A%9F%E8%83%BD_demo1.jpg"></p><h2 id="更多配置"><a href="#更多配置" class="headerlink" title="更多配置"></a>更多配置</h2><p>查看<a href="https://artitalk.js.org/settings.html#%F0%9F%93%8Cappid">artitalk配置文档</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="博客搭建" scheme="https://jiuaiop.gitee.io/categories/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/"/>
    
    
    <category term="Hexo" scheme="https://jiuaiop.gitee.io/tags/Hexo/"/>
    
    <category term="插件" scheme="https://jiuaiop.gitee.io/tags/%E6%8F%92%E4%BB%B6/"/>
    
    <category term="Artitalk" scheme="https://jiuaiop.gitee.io/tags/Artitalk/"/>
    
    <category term="说说" scheme="https://jiuaiop.gitee.io/tags/%E8%AF%B4%E8%AF%B4/"/>
    
    <category term="动态" scheme="https://jiuaiop.gitee.io/tags/%E5%8A%A8%E6%80%81/"/>
    
  </entry>
  
  <entry>
    <title>Hexo添加站内搜索</title>
    <link href="https://jiuaiop.gitee.io/posts/f79a3950-f72d-11ea-8a86-c5fa3ec3bc75/"/>
    <id>https://jiuaiop.gitee.io/posts/f79a3950-f72d-11ea-8a86-c5fa3ec3bc75/</id>
    <published>2020-09-15T08:32:18.000Z</published>
    <updated>2020-09-15T08:32:18.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="本地搜索"><a href="#本地搜索" class="headerlink" title="本地搜索"></a>本地搜索</h1><p>hexo实现站内搜索，实则上是使用了<code>hexo-generator-search</code>插件</p><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>根据它的文档去做相应配置。注意格式只支持 xml。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-generator-search --save</span><br></pre></td></tr></table></figure><h2 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h2><p>修改主题配置文件<code>_config.butterfly.yml</code>：</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">local_search:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">labels:</span></span><br><span class="line">    <span class="attr">input_placeholder:</span> <span class="string">Search</span> <span class="string">for</span> <span class="string">Posts</span></span><br><span class="line">    <span class="attr">hits_empty:</span> <span class="string">&quot;We didn&#x27;t find any results for the search: $&#123;query&#125;&quot;</span> <span class="comment"># if there are no result</span></span><br></pre></td></tr></table></figure><h1 id="Algolia"><a href="#Algolia" class="headerlink" title="Algolia"></a>Algolia</h1><p>你需要安装 <code>hexo-algolia</code> 或 <code>hexo-algoliasearch</code>. 根据它们的説明文档去做相应的配置。</p><h2 id="安装-1"><a href="#安装-1" class="headerlink" title="安装"></a>安装</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-algolia --save</span><br></pre></td></tr></table></figure><h2 id="配置-1"><a href="#配置-1" class="headerlink" title="配置"></a>配置</h2><p>修改主题配置文件<code>_config.butterfly.yml</code>：</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">algolia_search:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">hits:</span></span><br><span class="line">    <span class="attr">per_page:</span> <span class="number">6</span></span><br><span class="line">  <span class="attr">labels:</span></span><br><span class="line">    <span class="attr">input_placeholder:</span> <span class="string">Search</span> <span class="string">for</span> <span class="string">Posts</span></span><br><span class="line">    <span class="attr">hits_empty:</span> <span class="string">&quot;We didn&#x27;t find any results for the search: $&#123;query&#125;&quot;</span> <span class="comment"># if there are no result</span></span><br><span class="line">    <span class="attr">hits_stats:</span> <span class="string">&quot;$&#123;hits&#125; results found in $&#123;time&#125; ms&quot;</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="博客搭建" scheme="https://jiuaiop.gitee.io/categories/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/"/>
    
    
    <category term="本地搜索" scheme="https://jiuaiop.gitee.io/tags/%E6%9C%AC%E5%9C%B0%E6%90%9C%E7%B4%A2/"/>
    
    <category term="Algolia" scheme="https://jiuaiop.gitee.io/tags/Algolia/"/>
    
  </entry>
  
  <entry>
    <title>使用GitHub+jsDelivr+PicGo+Imagine打造稳定快速、高效免费图床</title>
    <link href="https://jiuaiop.gitee.io/posts/30efc280-f984-11ea-90b0-c5a83a2f2ef9a0b/"/>
    <id>https://jiuaiop.gitee.io/posts/30efc280-f984-11ea-90b0-c5a83a2f2ef9a0b/</id>
    <published>2020-09-15T08:29:53.000Z</published>
    <updated>2020-09-15T08:32:18.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>因为在不同平台发布同一篇文章的时候，最一个痛苦的点就是，图片存储问题，各个平台的文件存储方式各不相同，无法直接 <code>Ctrl + C</code> 的方式一键搞定，为了解决这个问题，使用 <code>MarkDown + 图床</code> 的方式进行文章的写作，将图片放到一个统一的地方，在文章中引入图片外链。<br>所谓<strong>图床</strong>，就是将图片储存到第三方静态资源库中，其返回给你一个 URL 进行获取图片。<code>MarkDown</code> 支持使用 URL 的方式显示图片，我想这也是程序员为什么对其偏爱的原因之一。<br>作为程序员，你会发现，现在很多论坛和社区都开始支持使用 <code>MarkDown</code>，如果你没使用图床的情况下，你分享同一篇文章，你要在不同的平台，各自重新编辑排版一遍和上传图片一次。<br>有了图床，情况就不一样了，<code>Ctrl+C</code> 的方式就搞定了，根本不用再 Check 文章内容一遍。</p><h3 id="图床的选择"><a href="#图床的选择" class="headerlink" title="图床的选择"></a>图床的选择</h3><ul><li><code>微博图床</code>：以前用的人比较多，从 2019 年 4 月开始开启了防盗链，凉凉</li><li><code>SM.MS</code>：运营四年多了，也变得越来越慢了，到了晚上直接打不开图片，速度堪忧</li><li><code>其他小众图床</code>：随时有挂掉的风险</li><li><code>Imgur 等国外图床</code>：国内访问速度太慢，随时有被墙的风险</li><li><code>大厂储存服务</code>：例如七牛云、又拍云、腾讯云COS、阿里云OSS等，操作繁琐，又是实名认证又是域名备案的，麻烦，而且还要花钱（有钱又不怕麻烦的当我没说）</li><li><code>GitHub 图床</code>：免费，但是国内访问速度慢（不过没关系，利用 <code>jsDelivr</code> 提供的免费的 CDN 加速 速度足够了）</li><li><code>Gitee图床</code>：免费，并且是国内的访问速度快。</li></ul><h2 id="Github图床搭建"><a href="#Github图床搭建" class="headerlink" title="Github图床搭建"></a>Github图床搭建</h2><h3 id="搭建流程"><a href="#搭建流程" class="headerlink" title="搭建流程"></a>搭建流程</h3><ol><li>新建 <code>GitHub</code> 仓库</li><li>生成一个 <code>Token</code></li><li>配置 <code>PicGo</code> 并使用 <code>jsdelivr</code> 作为 <code>CDN</code> 加速</li><li>使用 <code>Imagine</code> 进行图片压缩</li><li>上传图片到 <code>PicGo</code> 并使用图床</li></ol><h3 id="新建Github仓库"><a href="#新建Github仓库" class="headerlink" title="新建Github仓库"></a>新建Github仓库</h3><ol><li>登录/注册 <code>GitHub</code></li><li>新建一个仓库，填写好仓库名: 这里我们使用cdn/img随便都行</li><li>仓库描述</li><li>将权限设置成 <code>public</code></li><li>根据需求选择是否为仓库初始化一个 <code>README.md</code> 描述文件<br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143707426-235923297.png"></li></ol><h3 id="生成Token"><a href="#生成Token" class="headerlink" title="生成Token"></a>生成Token</h3><ol><li><p>点击用户头像 -&gt; 选择 <code>Settings</code><br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143707726-1628597102.png"></p></li><li><p>点击 <code>Developer settings</code><br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143707980-866353141.png"></p></li><li><p>点击 <code>Personal access tokens</code><br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143708248-1127631919.png"></p></li><li><p>点击 <code>Generate new token</code><br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143708476-2136659668.png"></p></li><li><p>填写 <code>Token</code> 描述，勾选 <code>repo</code>，然后点击 <code>Generate token</code> 生成一个 <code>Token</code><br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143709525-70134527.png"></p></li><li><p>获取 <code>Token</code> 密钥<br>注意：这个 Token 只会显示一次，自己先保存下来，或者等后面配置好 PicGo 后再关闭此网页<br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143709802-2004377463.png"></p></li></ol><h3 id="配置-PicGo-并使用-jsdelivr-作为-CDN-加速"><a href="#配置-PicGo-并使用-jsdelivr-作为-CDN-加速" class="headerlink" title="配置 PicGo 并使用 jsdelivr 作为 CDN 加速"></a>配置 PicGo 并使用 jsdelivr 作为 CDN 加速</h3><p>前往下载 <a href="https://github.com/Molunerfinn/picgo/releases">PicGo（点击下载）</a>，安装好后开始配置图床</p><ul><li>设定仓库名：按照 <code>用户名/图床仓库名</code> 的格式填写</li><li>设定分支名：<code>master</code></li><li>设定 Token：粘贴之前生成的 <code>Token</code></li><li>指定存储路径：填写想要储存的路径，如 <code>img/</code>，这样就会在仓库下创建一个名为 img 的文件夹，图片将会储存在此文件夹中</li><li>设定自定义域名：它的的作用是，在图片上传后，<code>PicGo</code> 会按照<code>自定义域名+上传的图片名</code>的方式生成访问链接，放到粘贴板上，因为我们要使用<code>jsDelivr</code> 加速访问，所以可以设置为<a href="https://cdn.jsdelivr.net/gh/%E7%94%A8%E6%88%B7%E5%90%8D/%E5%9B%BE%E5%BA%8A%E4%BB%93%E5%BA%93%E5%90%8D">https://cdn.jsdelivr.net/gh/用户名/图床仓库名</a><br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143710014-1605342625.png"></li></ul><blockquote><p>什么是 jsdelivr ?<br>jsDelivr 为开发者提供免费公共 CDN 加速服务</p></blockquote><h3 id="使用-Imagine-进行图片压缩"><a href="#使用-Imagine-进行图片压缩" class="headerlink" title="使用 Imagine 进行图片压缩"></a>使用 Imagine 进行图片压缩</h3><p>通常情况下，图片大小都是超过 200KB 的，所以网页加载的时候会特别慢，一般我们会对图片进行压缩，这里我推荐 <a href="https://github.com/meowtec/Imagine/releases">Imagine（点击下载）</a> 支持全平台。<br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143712172-1803144749.png"></p><blockquote><p>Imagine 采用的是有损压缩，介意的可以忽略这一步</p></blockquote><p>顺便推荐一个无损压缩的网站：<a href="https://tinypng.com/">https://tinypng.com/</a></p><h3 id="上传图片到-PicGo-并使用图床"><a href="#上传图片到-PicGo-并使用图床" class="headerlink" title="上传图片到 PicGo 并使用图床"></a>上传图片到 PicGo 并使用图床</h3><p>配置好 <code>PicGo</code> 后，我们就可以进行高效创作了，将<code>压缩后的图片</code>拖拽到<code>上传区</code>，将会自动上传并复制<code>访问链接</code>，将链接粘贴到博文中就行了，访问速度杠杠的<br><img src= "/img/loading.gif" data-lazy-src="https://img2018.cnblogs.com/blog/1705824/201911/1705824-20191113143712417-1116109240.png"><br>此外 <code>PicGo</code> 还有<code>相册</code>功能，可以对已上传的图片进行删除，修改链接等快捷操作，PicGo 还可以生成不同格式的链接、支持批量上传、快捷键上传、自定义链接格式、上传前重命名等，更多功能自己去探索吧！</p><h2 id="Gitee图床搭建"><a href="#Gitee图床搭建" class="headerlink" title="Gitee图床搭建"></a>Gitee图床搭建</h2><p>在写 <code>markdown</code> 文件的时，会不可避免的插入图片。可以通过<code>PicGo</code> + <code>gitee</code> 实现<code>markdown</code>图片在线存储。</p><h3 id="搭建流程-1"><a href="#搭建流程-1" class="headerlink" title="搭建流程"></a>搭建流程</h3><ol><li>下载<code>PicGo</code></li><li>安装<code>PicGo</code>并且安装<code>Gitee</code>图床插件(PicGo默认不包含 Gitee 图床)</li><li>创建<code>Gitee</code>图床存储仓库</li><li>设置<code>Gitee</code>私人令牌</li><li>设置PicGo + Gitee图床信息</li></ol><h3 id="下载PicGo"><a href="#下载PicGo" class="headerlink" title="下载PicGo"></a>下载PicGo</h3><p>前往下载 <a href="https://github.com/Molunerfinn/picgo/releases">PicGo（点击下载）</a>，下载好后进行安装<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_01.jpg"></p><h3 id="安装PicGo并且安装Gitee图床插件"><a href="#安装PicGo并且安装Gitee图床插件" class="headerlink" title="安装PicGo并且安装Gitee图床插件"></a>安装PicGo并且安装Gitee图床插件</h3><p>PicGo默认不包含 Gitee 图床,需要自己在插件市场进行安装，请按照图上步骤进行安装。<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_02.png"></p><h3 id="创建Gitee图床存储仓库"><a href="#创建Gitee图床存储仓库" class="headerlink" title="创建Gitee图床存储仓库"></a>创建Gitee图床存储仓库</h3><p>登录<a href="https://gitee.com/">Gitee账号</a>(没有自己注册一个账户)，然后点击右上角的<code>+</code>号，按照下图的顺序填写与勾选。<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_03.png"></p><h3 id="设置Gitee私人令牌"><a href="#设置Gitee私人令牌" class="headerlink" title="设置Gitee私人令牌"></a>设置Gitee私人令牌</h3><p>私人令牌字符串只会在密码验证后出现一次，注意复制保存。<br>点击右上角个人头像 -&gt; 设置 进入到设置中心，如下：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_04.png"><br>然后点击<code>私人令牌</code>，按照图上顺序进行填写：<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_05.png"><br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_06.png"><br>生成令牌后请注意保存，关闭窗口后就无法再次查看。<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_07.png"></p><h3 id="设置PicGo-Gitee图床信息"><a href="#设置PicGo-Gitee图床信息" class="headerlink" title="设置PicGo + Gitee图床信息"></a>设置PicGo + Gitee图床信息</h3><p><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_08.png"></p><ul><li>repo：仓库(一般采用<code>Git用户名/仓库名</code>)</li><li>branch：分支(一般使用master)</li><li>token：私人令牌(将上一步生成的私人令牌复制粘贴)</li><li>path：则是在图片上传成功后访问地址的前缀</li><li>customPath: 生成文件后的重命名方式，按照自己的需求进行选择</li><li>customUrl: 可以不填写</li></ul><p>配置成功后的访问地址则是如下：</p><blockquote><p><a href="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_08.png">https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_08.png</a></p></blockquote><h2 id="NextCoud图床搭建"><a href="#NextCoud图床搭建" class="headerlink" title="NextCoud图床搭建"></a>NextCoud图床搭建</h2><p>在写 <code>markdown</code> 文件的时，会不可避免的插入图片。可以通过<code>PicGo</code> + <code>NextCloud</code> 实现<code>markdown</code>图片在线存储。</p><h3 id="搭建流程-2"><a href="#搭建流程-2" class="headerlink" title="搭建流程"></a>搭建流程</h3><ol><li>下载<code>PicGo</code></li><li>安装<code>PicGo</code>并且安装<code>NextCloud</code>图床插件(PicGo默认不包含 NextCloud 图床)</li><li>搭建<code>NextCloud</code>个人网盘</li><li>设置PicGo + NextCloud图床信息</li></ol><h3 id="下载PicGo-1"><a href="#下载PicGo-1" class="headerlink" title="下载PicGo"></a>下载PicGo</h3><p>前往下载 <a href="https://github.com/Molunerfinn/picgo/releases">PicGo（点击下载）</a>，下载好后进行安装<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/Gitee%E5%9B%BE%E5%BA%8A%E6%90%AD%E5%BB%BA_01.jpg"></p><h3 id="安装PicGo并且安装NextCloud图床插件"><a href="#安装PicGo并且安装NextCloud图床插件" class="headerlink" title="安装PicGo并且安装NextCloud图床插件"></a>安装<code>PicGo</code>并且安装<code>NextCloud</code>图床插件</h3><p><code>PicGo</code>默认不包含 <code>NextCloud</code> 图床，需要手动去安装<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/nextcloud%E6%90%AD%E5%BB%BA%E5%9B%BE%E5%BA%8A_01.png"></p><h3 id="搭建NextCloud个人网盘"><a href="#搭建NextCloud个人网盘" class="headerlink" title="搭建NextCloud个人网盘"></a>搭建NextCloud个人网盘</h3><p>查看: <a href="http://www.chenliang0829.cn:8081/topic/5f349605ea4e6f11da8d73d6">阿里云centos服务器搭建nextcloud个人网盘</a></p><h3 id="设置PicGo-NextCloud图床信息"><a href="#设置PicGo-NextCloud图床信息" class="headerlink" title="设置PicGo + NextCloud图床信息"></a>设置PicGo + NextCloud图床信息</h3><p>按照图上的提示进行填写<br><img src= "/img/loading.gif" data-lazy-src="https://gitee.com/jiuaiop/img/raw/master/img/nextcloud%E6%90%AD%E5%BB%BA%E5%9B%BE%E5%BA%8A_02.png"></p><ul><li>服务地址：nextcloud 网盘的域名及端口/ip及端口</li><li>用户名：在 nextcloud 网盘搭建时创建的用户的用户名</li><li>密码：在 nextcloud 网盘搭建时创建的用户的密码</li><li>保存地址：将图片保存到 nextcloud 的哪里，不写默认就是在根目录</li></ul><p>配置成功后的访问地址则是如下：</p><blockquote><p><a href="http://121.199.50.62:8088/s/prXNXtwSDYTpwHW/preview">http://121.199.50.62:8088/s/prXNXtwSDYTpwHW/preview</a></p></blockquote><h2 id="PicGo搭建自定义web图床"><a href="#PicGo搭建自定义web图床" class="headerlink" title="PicGo搭建自定义web图床"></a>PicGo搭建自定义web图床</h2><p>待完成………….</p><p>参考：<a href="https://www.cnblogs.com/sitoi/p/11848816.html">https://www.cnblogs.com/sitoi/p/11848816.html</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;\assets\css\APlayer.min.css&quot;&gt;&lt;script src=&quot;\assets\js\APlayer.min.js&quot; cla</summary>
      
    
    
    
    <category term="图床" scheme="https://jiuaiop.gitee.io/categories/%E5%9B%BE%E5%BA%8A/"/>
    
    
    <category term="图床" scheme="https://jiuaiop.gitee.io/tags/%E5%9B%BE%E5%BA%8A/"/>
    
    <category term="markdown" scheme="https://jiuaiop.gitee.io/tags/markdown/"/>
    
    <category term="github" scheme="https://jiuaiop.gitee.io/tags/github/"/>
    
    <category term="jsDelivr" scheme="https://jiuaiop.gitee.io/tags/jsDelivr/"/>
    
    <category term="PicGo" scheme="https://jiuaiop.gitee.io/tags/PicGo/"/>
    
    <category term="Imagine" scheme="https://jiuaiop.gitee.io/tags/Imagine/"/>
    
  </entry>
  
</feed>
