<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Lee</title>
  
  <subtitle>Just open your eyes , you got everything in the world</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://lee.js.org/"/>
  <updated>2019-07-13T02:20:43.958Z</updated>
  <id>https://lee.js.org/</id>
  
  <author>
    <name>Lee Aaron</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>webpack入门</title>
    <link href="https://lee.js.org/2019/03/21/webpack%E5%85%A5%E9%97%A8/"/>
    <id>https://lee.js.org/2019/03/21/webpack入门/</id>
    <published>2019-03-21T02:07:15.000Z</published>
    <updated>2019-07-13T02:20:43.958Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>最近在网上看了一些大神的webpack配置，整理收录一下<br><a id="more"></a></p><h2 id="常见的webpack配置"><a href="#常见的webpack配置" class="headerlink" title="常见的webpack配置"></a>常见的webpack配置</h2><blockquote><p>阅读本文之前，先看下面这个webpack的配置文件，如果每一项你都懂，那本文能带给你的收获也许就比较有限，你可以快速浏览或直接跳过；如果你和十天前的我一样，对很多选项存在着疑惑，那花一段时间慢慢阅读本文，你的疑惑一定一个一个都会消失；如果你以前没怎么接触过Webpack，而你又你对webpack感兴趣，那么动手跟着本文中那个贯穿始终的例子写一次，写完以后你会发现你已明明白白的走进了Webpack的大门。</p></blockquote><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><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></pre></td><td class="code"><pre><span class="line"><span class="comment">// 一个常见的`webpack`配置文件</span></span><br><span class="line"><span class="keyword">const</span> webpack = <span class="built_in">require</span>(<span class="string">'webpack'</span>);</span><br><span class="line"><span class="keyword">const</span> HtmlWebpackPlugin = <span class="built_in">require</span>(<span class="string">'html-webpack-plugin'</span>);</span><br><span class="line"><span class="keyword">const</span> ExtractTextPlugin = <span class="built_in">require</span>(<span class="string">'extract-text-webpack-plugin'</span>);</span><br><span class="line"></span><br><span class="line"><span class="built_in">module</span>.exports = &#123;</span><br><span class="line">        entry: __dirname + <span class="string">"/app/main.js"</span>, <span class="comment">//已多次提及的唯一入口文件</span></span><br><span class="line">        output: &#123;</span><br><span class="line">            path: __dirname + <span class="string">"/build"</span>,</span><br><span class="line">            filename: <span class="string">"bundle-[hash].js"</span></span><br><span class="line">        &#125;,</span><br><span class="line">        devtool: <span class="string">'none'</span>,</span><br><span class="line">        devServer: &#123;</span><br><span class="line">            contentBase: <span class="string">"./public"</span>, <span class="comment">//本地服务器所加载的页面所在的目录</span></span><br><span class="line">            historyApiFallback: <span class="literal">true</span>, <span class="comment">//不跳转</span></span><br><span class="line">            inline: <span class="literal">true</span>,</span><br><span class="line">            hot: <span class="literal">true</span></span><br><span class="line">        &#125;,</span><br><span class="line">        <span class="built_in">module</span>: &#123;</span><br><span class="line">            rules: [&#123;</span><br><span class="line">                    test: <span class="regexp">/(\.jsx|\.js)$/</span>,</span><br><span class="line">                    use: &#123;</span><br><span class="line">                        loader: <span class="string">"babel-loader"</span></span><br><span class="line">                    &#125;,</span><br><span class="line">                    exclude: <span class="regexp">/node_modules/</span></span><br><span class="line">                &#125;, &#123;</span><br><span class="line">                    test: <span class="regexp">/\.css$/</span>,</span><br><span class="line">                    use: ExtractTextPlugin.extract(&#123;</span><br><span class="line">                        fallback: <span class="string">"style-loader"</span>,</span><br><span class="line">                        use: [&#123;</span><br><span class="line">                            loader: <span class="string">"css-loader"</span>,</span><br><span class="line">                            options: &#123;</span><br><span class="line">                                modules: <span class="literal">true</span>,</span><br><span class="line">                                localIdentName: <span class="string">'[name]__[local]--[hash:base64:5]'</span></span><br><span class="line">                            &#125;</span><br><span class="line">                        &#125;, &#123;</span><br><span class="line">                            loader: <span class="string">"postcss-loader"</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><br><span class="line">    &#125;,</span><br><span class="line">    plugins: [</span><br><span class="line">        <span class="keyword">new</span> webpack.BannerPlugin(<span class="string">'版权所有，翻版必究'</span>),</span><br><span class="line">        <span class="keyword">new</span> HtmlWebpackPlugin(&#123;</span><br><span class="line">            template: __dirname + <span class="string">"/app/index.tmpl.html"</span> <span class="comment">//new 一个这个插件的实例，并传入相关的参数</span></span><br><span class="line">        &#125;),</span><br><span class="line">        <span class="keyword">new</span> webpack.optimize.OccurrenceOrderPlugin(),</span><br><span class="line">        <span class="keyword">new</span> webpack.optimize.UglifyJsPlugin(),</span><br><span class="line">        <span class="keyword">new</span> ExtractTextPlugin(<span class="string">"style.css"</span>)</span><br><span class="line">    ]</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><h2 id="什么是WebPack，为什么要使用它？"><a href="#什么是WebPack，为什么要使用它？" class="headerlink" title="什么是WebPack，为什么要使用它？"></a>什么是WebPack，为什么要使用它？</h2><h3 id="为什要使用WebPack"><a href="#为什要使用WebPack" class="headerlink" title="为什要使用WebPack"></a>为什要使用WebPack</h3><p>现今的很多网页其实可以看做是功能丰富的应用，它们拥有着复杂的JavaScript代码和一大堆依赖包。为了简化开发的复杂度，前端社区涌现出了很多好的实践方法</p><ul><li><strong>模块化</strong>，让我们可以把复杂的程序细化为小的文件;</li><li>类似于TypeScript这种在JavaScript基础上拓展的开发语言：使我们能够实现目前版本的JavaScript不能直接使用的特性，并且之后还能转换为JavaScript文件使浏览器可以识别；</li><li>Scss，less等CSS预处理器</li><li>…</li></ul><p>这些改进确实大大的提高了我们的开发效率，但是利用它们开发的文件往往需要进行额外的处理才能让浏览器识别,而手动处理又是非常繁琐的，这就为WebPack类的工具的出现提供了需求。</p><h3 id="什么是Webpack"><a href="#什么是Webpack" class="headerlink" title="什么是Webpack"></a>什么是Webpack</h3><p>WebPack可以看做是模块打包机：它做的事情是，分析你的项目结构，找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言（Scss，TypeScript等），并将其转换和打包为合适的格式供浏览器使用。</p><p>WebPack和Grunt以及Gulp相比有什么特性<br>其实Webpack和另外两个并没有太多的可比性，Gulp/Grunt是一种能够优化前端的开发流程的工具，而WebPack是一种模块化的解决方案，不过Webpack的优点使得Webpack在很多场景下可以替代Gulp/Grunt类的工具。</p><p>Grunt和Gulp的工作方式是：在一个配置文件中，指明对某些文件进行类似编译，组合，压缩等任务的具体步骤，工具之后可以自动替你完成这些任务。</p><p><img src="/img/gulp.webp" alt=""></p><p>Webpack的工作方式是：把你的项目当做一个整体，通过一个给定的主文件（如：index.js），Webpack将从这个文件开始找到你的项目的所有依赖文件，使用loaders处理它们，最后打包为一个（或多个）浏览器可识别的JavaScript文件。</p><p><img src="/img/webpack.webp" alt=""></p><p>如果实在要把二者进行比较，Webpack的处理速度更快更直接，能打包更多不同类型的文件。</p><h2 id="开始使用Webpack"><a href="#开始使用Webpack" class="headerlink" title="开始使用Webpack"></a>开始使用Webpack</h2><p>初步了解了Webpack工作方式后，我们一步步的开始学习使用Webpack。</p><h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><p>Webpack可以使用npm安装，新建一个空的练习文件夹（此处命名为webpack sample project），在终端中转到该文件夹后执行下述指令就可以完成安装。</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"><span class="comment">//全局安装</span></span><br><span class="line">npm install -g webpack</span><br><span class="line"><span class="comment">//安装到你的项目目录</span></span><br><span class="line">npm install --save-dev webpack</span><br></pre></td></tr></table></figure><h3 id="正式使用Webpack前的准备"><a href="#正式使用Webpack前的准备" class="headerlink" title="正式使用Webpack前的准备"></a>正式使用Webpack前的准备</h3><ol><li>在上述练习文件夹中创建一个package.json文件，这是一个标准的npm说明文件，里面蕴含了丰富的信息，包括当前项目的依赖模块，自定义的脚本任务等等。在终端中使用<code>npm init</code>命令可以自动创建这个package.json文件</li></ol><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">npm init</span><br></pre></td></tr></table></figure><p>输入这个命令后，终端会问你一系列诸如项目名称，项目描述，作者等信息，不过不用担心，如果你不准备在npm中发布你的模块，这些问题的答案都不重要，回车默认即可。</p><ol start="2"><li>package.json文件已经就绪，我们在本项目中安装Webpack作为依赖包</li></ol><figure class="highlight js"><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="comment">// 安装Webpack</span></span><br><span class="line">npm install --save-dev webpack</span><br></pre></td></tr></table></figure><ol start="3"><li><p>回到之前的空文件夹，并在里面创建两个文件夹,app文件夹和public文件夹，app文件夹用来存放原始数据和我们将写的JavaScript模块，public文件夹用来存放之后供浏览器读取的文件（包括使用webpack打包生成的js文件以及一个index.html文件）。接下来我们再创建三个文件:</p><ul><li><code>index.html</code> –放在public文件夹中;</li><li><code>Greeter.js</code>– 放在app文件夹中;</li><li><p><code>main.js</code>– 放在app文件夹中;</p><p>此时项目结构如下图所示:<br><img src="/img/f.webp" alt=""></p><p>我们在<code>index.html</code>文件中写入最基础的html代码，它在这里目的在于引入打包后的js文件（这里我们先把之后打包后的js文件命名为<code>bundle.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></pre></td><td class="code"><pre><span class="line">&lt;!-- index.html --&gt;</span><br><span class="line">&lt;!DOCTYPE html&gt;</span><br><span class="line">&lt;html lang=<span class="string">"en"</span>&gt;</span><br><span class="line">  &lt;head&gt;</span><br><span class="line">    &lt;meta charset=<span class="string">"utf-8"</span>&gt;</span><br><span class="line">    &lt;title&gt;Webpack Sample Project&lt;<span class="regexp">/title&gt;</span></span><br><span class="line"><span class="regexp">  &lt;/</span>head&gt;</span><br><span class="line">  &lt;body&gt;</span><br><span class="line">    &lt;div id=<span class="string">'root'</span>&gt;</span><br><span class="line">    &lt;<span class="regexp">/div&gt;</span></span><br><span class="line"><span class="regexp">    &lt;script src="bundle.js"&gt;&lt;/</span>script&gt;</span><br><span class="line">  &lt;<span class="regexp">/body&gt;</span></span><br><span class="line"><span class="regexp">&lt;/</span>html&gt;</span><br></pre></td></tr></table></figure><p>我们在<code>Greeter.js</code>中定义一个返回包含问候信息的html元素的函数,并依据CommonJS规范导出这个函数为一个模块：</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></pre></td><td class="code"><pre><span class="line"><span class="comment">// Greeter.js</span></span><br><span class="line"><span class="built_in">module</span>.exports = <span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">  <span class="keyword">var</span> greet = <span class="built_in">document</span>.createElement(<span class="string">'div'</span>);</span><br><span class="line">  greet.textContent = <span class="string">"Hi there and greetings!"</span>;</span><br><span class="line">  <span class="keyword">return</span> greet;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p><code>main.js</code>文件中我们写入下述代码，用以把<code>Greeter</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="comment">//main.js</span></span><br><span class="line"><span class="keyword">const</span> greeter = <span class="built_in">require</span>(<span class="string">'./Greeter.js'</span>);</span><br><span class="line"><span class="built_in">document</span>.querySelector(<span class="string">"#root"</span>).appendChild(greeter());</span><br></pre></td></tr></table></figure></li></ul></li></ol><h3 id="正式使用Webpack"><a href="#正式使用Webpack" class="headerlink" title="正式使用Webpack"></a>正式使用Webpack</h3><p>webpack可以在终端中使用，在基本的使用方法如下：</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"># &#123;extry file&#125;出填写入口文件的路径，本文中就是上述main.js的路径，</span><br><span class="line"># &#123;destination for bundled file&#125;处填写打包文件的存放路径</span><br><span class="line"># 填写路径的时候不用添加&#123;&#125;</span><br><span class="line">webpack &#123;entry file&#125; &#123;destination <span class="keyword">for</span> bundled file&#125;</span><br></pre></td></tr></table></figure><p>指定入口文件后，webpack将自动识别项目所依赖的其它文件，不过需要注意的是如果你的webpack不是全局安装的，那么当你在终端中使用此命令时，需要额外指定其在node_modules中的地址，继续上面的例子，在终端中输入如下命令</p><figure class="highlight js"><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"># webpack非全局安装的情况</span><br><span class="line">node_modules/.bin/webpack app/main.js public/bundle.js</span><br></pre></td></tr></table></figure><p>结果如下：<br><img src="/img/result.webp" alt=""></p><p>可以看出<code>webpack</code>同时编译了<code>main.js</code> 和<code>Greeter.js</code>,现在打开<code>index.html</code>,可以看到如下结果<br><img src="/img/103d.webp" alt=""></p><p>有没有很激动，已经成功的使用<code>Webpack</code>打包了一个文件了。不过在终端中进行复杂的操作，其实是不太方便且容易出错的，接下来看看<code>Webpack</code>的另一种更常见的使用方法。</p><h3 id="通过配置文件来使用Webpack"><a href="#通过配置文件来使用Webpack" class="headerlink" title="通过配置文件来使用Webpack"></a>通过配置文件来使用Webpack</h3><p><code>Webpack</code>拥有很多其它的比较高级的功能（比如说本文后面会介绍的<code>loaders</code>和<code>plugins</code>），这些功能其实都可以通过命令行模式实现，但是正如前面提到的，这样不太方便且容易出错的，更好的办法是定义一个配置文件，这个配置文件其实也是一个简单的JavaScript模块，我们可以把所有的与打包相关的信息放在里面。</p><p>继续上面的例子来说明如何写这个配置文件，在当前练习文件夹的根目录下新建一个名为<code>webpack.config.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></pre></td><td class="code"><pre><span class="line"><span class="built_in">module</span>.exports = &#123;</span><br><span class="line">  entry:  __dirname + <span class="string">"/app/main.js"</span>,<span class="comment">//已多次提及的唯一入口文件</span></span><br><span class="line">  output: &#123;</span><br><span class="line">    path: __dirname + <span class="string">"/public"</span>,<span class="comment">//打包后的文件存放的地方</span></span><br><span class="line">    filename: <span class="string">"bundle.js"</span><span class="comment">//打包后输出文件的文件名</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>注：<code>__dirname</code>是node.js中的一个全局变量，它指向当前执行脚本所在的目录。</p></blockquote><p>有了这个配置之后，再打包文件，只需在终端里运行<code>webpack(非全局安装需使用node_modules/.bin/webpack)</code>命令就可以了，这条命令会自动引用<code>webpack.config.js</code>文件中的配置选项，示例如下：<br><img src="/img/9e56.webp" alt=""></p><p>又学会了一种使用<code>Webpack</code>的方法，这种方法不用管那烦人的命令行参数，有没有感觉很爽。如果我们可以连<code>webpack(非全局安装需使用node_modules/.bin/webpack)</code>这条命令都可以不用，那种感觉会不会更爽~，继续看下文。</p><h3 id="更快捷的执行打包任务"><a href="#更快捷的执行打包任务" class="headerlink" title="更快捷的执行打包任务"></a>更快捷的执行打包任务</h3><p>在命令行中输入命令需要代码类似于node_modules/.bin/webpack这样的路径其实是比较烦人的，不过值得庆幸的是npm可以引导任务执行，对npm进行配置后可以在命令行中使用简单的npm start命令来替代上面略微繁琐的命令。在package.json中对scripts对象进行相关设置即可，设置方法如下。</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><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="attr">"name"</span>: <span class="string">"webpack-sample-project"</span>,</span><br><span class="line">  <span class="attr">"version"</span>: <span class="string">"1.0.0"</span>,</span><br><span class="line">  <span class="attr">"description"</span>: <span class="string">"Sample webpack project"</span>,</span><br><span class="line">  <span class="attr">"scripts"</span>: &#123;</span><br><span class="line">    <span class="attr">"start"</span>: <span class="string">"webpack"</span></span><br><span class="line">  &#125;,</span><br><span class="line">  <span class="attr">"author"</span>: <span class="string">"Lee"</span>,</span><br><span class="line">  <span class="attr">"license"</span>: <span class="string">"ISC"</span>,</span><br><span class="line">  <span class="attr">"devDependencies"</span>: &#123;</span><br><span class="line">    <span class="attr">"webpack"</span>: <span class="string">"3.10.0"</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>注：<code>package.json</code>中的<code>script</code>会安装一定顺序寻找命令对应位置，本地的<code>node_modules/.bin</code>路径就在这个寻找清单中，所以无论是全局还是局部安装的<code>Webpack</code>，你都不需要写前面那指明详细的路径了</p></blockquote><p>npm的<code>start</code>命令是一个特殊的脚本名称，其特殊性表现在，在命令行中使用<code>npm start</code>就可以执行其对于的命令，如果对应的此脚本名称不是start，想要在命令行中运行时，需要这样用<code>npm run {script name}</code>如<code>npm run build</code>，我们在命令行中输入<code>npm start</code>试试，输出结果如下：</p><p><img src="/img/4163.webp" alt=""></p><p>现在只需要使用<code>npm start</code>就可以打包文件了，有没有觉得webpack也不过如此嘛，不过不要太小瞧webpack，要充分发挥其强大的功能我们需要修改配置文件的其它选项，一项项来看。</p><h2 id="Webpack的强大功能"><a href="#Webpack的强大功能" class="headerlink" title="Webpack的强大功能"></a>Webpack的强大功能</h2><h3 id="生成Source-Maps（使调试更容易）"><a href="#生成Source-Maps（使调试更容易）" class="headerlink" title="生成Source Maps（使调试更容易）"></a>生成Source Maps（使调试更容易）</h3><p>开发总是离不开调试，方便的调试能极大的提高开发效率，不过有时候通过打包后的文件，你是不容易找到出错了的地方，对应的你写的代码的位置的，<code>Source Maps</code>就是来帮我们解决这个问题的。</p><p>通过简单的配置，webpack就可以在打包时为我们生成的<code>source maps</code>，这为我们提供了一种对应编译文件和源文件的方法，使得编译后的代码可读性更高，也更容易调试。</p><p>在webpack的配置文件中配置<code>source maps</code>，需要配置<code>devtool</code>，它有以下四种不同的配置选项，各具优缺点，描述如下：</p><table><thead><tr><th style="text-align:center">devtool选项</th><th style="text-align:center">配置结果</th></tr></thead><tbody><tr><td style="text-align:center"><code>source-map</code></td><td style="text-align:center">在一个单独的文件中产生一个完整且功能完全的文件。这个文件具有最好的<code>source map</code>，但是它会减慢打包速度；</td></tr><tr><td style="text-align:center"><code>cheap-module-source-map</code></td><td style="text-align:center">在一个单独的文件中生成一个不带列映射的<code>map</code>，不带列映射提高了打包速度，但是也使得浏览器开发者工具只能对应到具体的行，不能对应到具体的列（符号），会对调试造成不便；</td></tr><tr><td style="text-align:center"><code>eval-source-map</code></td><td style="text-align:center">使用<code>eval</code>打包源文件模块，在同一个文件中生成干净的完整的<code>source map</code>。这个选项可以在不影响构建速度的前提下生成完整的<code>sourcemap</code>，但是对打包后输出的JS文件的执行具有性能和安全的隐患。在开发阶段这是一个非常好的选项，在生产阶段则一定不要启用这个选项；</td></tr><tr><td style="text-align:center"><code>cheap-module-eval-source-map</code></td><td style="text-align:center">这是在打包文件时最快的生成<code>source map</code>的方法，生成的<code>Source Map</code> 会和打包后的<code>JavaScript</code>文件同行显示，没有列映射，和<code>eval-source-map</code>选项具有相似的缺点；</td></tr></tbody></table><p>正如上表所述，上述选项由上到下打包速度越来越快，不过同时也具有越来越多的负面作用，较快的打包速度的后果就是对打包后的文件的的执行有一定影响。</p><p>对小到中型的项目中，<code>eval-source-map</code>是一个很好的选项，再次强调你只应该开发阶段使用它，我们继续对上文新建的<code>webpack.config.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></pre></td><td class="code"><pre><span class="line"><span class="built_in">module</span>.exports = &#123;</span><br><span class="line">  devtool: <span class="string">'eval-source-map'</span>,</span><br><span class="line">  entry:  __dirname + <span class="string">"/app/main.js"</span>,</span><br><span class="line">  output: &#123;</span><br><span class="line">    path: __dirname + <span class="string">"/public"</span>,</span><br><span class="line">    filename: <span class="string">"bundle.js"</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p><code>cheap-module-eval-source-map</code>方法构建速度更快，但是不利于调试，推荐在大型项目考虑时间成本时使用。</p></blockquote><h3 id="使用webpack构建本地服务器"><a href="#使用webpack构建本地服务器" class="headerlink" title="使用webpack构建本地服务器"></a>使用webpack构建本地服务器</h3><p>想不想让你的浏览器监听你的代码的修改，并自动刷新显示修改后的结果，其实Webpack提供一个可选的本地开发服务器，这个本地服务器基于node.js构建，可以实现你想要的这些功能，不过它是一个单独的组件，在webpack中进行配置之前需要单独安装它作为项目依赖</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">npm install --save-dev webpack-dev-server</span><br></pre></td></tr></table></figure><p>devserver作为webpack配置选项中的一项，以下是它的一些配置选项，更多配置可参考 <a href="https://webpack.js.org/configuration/dev-server/" target="_blank" rel="noopener">这里</a></p><table><thead><tr><th style="text-align:center">devserver的配置选项</th><th style="text-align:center">功能描述</th></tr></thead><tbody><tr><td style="text-align:center">contentBase</td><td style="text-align:center">默认webpack-dev-server会为根文件夹提供本地服务器，如果想为另外一个目录下的文件提供本地服务器，应该在这里设置其所在目录（本例设置到“public”目录）</td></tr><tr><td style="text-align:center">port</td><td style="text-align:center">设置默认监听端口，如果省略，默认为”8080”</td></tr><tr><td style="text-align:center">inline</td><td style="text-align:center">设置为<code>true</code>，当源文件改变时会自动刷新页面</td></tr><tr><td style="text-align:center">historyApiFallback</td><td style="text-align:center">在开发单页应用时非常有用，它依赖于HTML5 history API，如果设置为true，所有的跳转将指向index.html</td></tr></tbody></table><p>把这些命令加到webpack的配置文件中，现在的配置文件<code>webpack.config.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="built_in">module</span>.exports = &#123;</span><br><span class="line">  devtool: <span class="string">'eval-source-map'</span>,</span><br><span class="line"></span><br><span class="line">  entry:  __dirname + <span class="string">"/app/main.js"</span>,</span><br><span class="line">  output: &#123;</span><br><span class="line">    path: __dirname + <span class="string">"/public"</span>,</span><br><span class="line">    filename: <span class="string">"bundle.js"</span></span><br><span class="line">  &#125;,</span><br><span class="line"></span><br><span class="line">  devServer: &#123;</span><br><span class="line">    contentBase: <span class="string">"./public"</span>,<span class="comment">//本地服务器所加载的页面所在的目录</span></span><br><span class="line">    historyApiFallback: <span class="literal">true</span>,<span class="comment">//不跳转</span></span><br><span class="line">    inline: <span class="literal">true</span><span class="comment">//实时刷新</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>在<code>package.json</code>中的<code>scripts</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></pre></td><td class="code"><pre><span class="line"><span class="string">"scripts"</span>: &#123;</span><br><span class="line">    <span class="string">"test"</span>: <span class="string">"echo \"Error: no test specified\" &amp;&amp; exit 1"</span>,</span><br><span class="line">    <span class="string">"start"</span>: <span class="string">"webpack"</span>,</span><br><span class="line">    <span class="string">"server"</span>: <span class="string">"webpack-dev-server --open"</span></span><br><span class="line">  &#125;,</span><br></pre></td></tr></table></figure><p>在终端中输入<code>npm run server</code>即可在本地的<code>8080</code>端口查看结果</p><p><img src="/img/177187.webp" alt=""></p><h3 id="Loaders"><a href="#Loaders" class="headerlink" title="Loaders"></a>Loaders</h3><p><code>Loaders</code>是<code>webpack</code>提供的最激动人心的功能之一了。通过使用不同的<code>loader</code>，<code>webpack</code>有能力调用外部的脚本或工具，实现对不同格式的文件的处理，比如说分析转换scss为css，或者把下一代的JS文件（ES6，ES7)转换为现代浏览器兼容的JS文件，对React的开发而言，合适的Loaders可以把React的中用到的JSX文件转换为JS文件。</p><p>Loaders需要单独安装并且需要在<code>webpack.config.js</code>中的<code>modules</code>关键字下进行配置，<br>Loaders的配置包括以下几方面：<br>test：一个用以匹配loaders所处理文件的拓展名的正则表达式（必须）</p><ul><li><p>loader：loader的名称（必须）</p></li><li><p>include/exclude:手动添加必须处理的文件（文件夹）或屏蔽不需要处理的文件（文件夹）（可选）；</p></li><li><p>query：为loaders提供额外的设置选项（可选）</p></li></ul><p>此时项目结构如下图所示:</p><p><img src="/img/0702f.webp" alt=""></p><p>我们在 <strong>index.html</strong> 文件中写入最基础的html代码，它在这里目的在于引入打包后的js文件（这里我们先把之后打包后的js文件命名为<code>bundle.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></pre></td><td class="code"><pre><span class="line">&lt;!-- index.html --&gt;</span><br><span class="line">&lt;!DOCTYPE html&gt;</span><br><span class="line">&lt;html lang=<span class="string">"en"</span>&gt;</span><br><span class="line">  &lt;head&gt;</span><br><span class="line">    &lt;meta charset=<span class="string">"utf-8"</span>&gt;</span><br><span class="line">    &lt;title&gt;Webpack Sample Project&lt;<span class="regexp">/title&gt;</span></span><br><span class="line"><span class="regexp">  &lt;/</span>head&gt;</span><br><span class="line">  &lt;body&gt;</span><br><span class="line">    &lt;div id=<span class="string">'root'</span>&gt;</span><br><span class="line">    &lt;<span class="regexp">/div&gt;</span></span><br><span class="line"><span class="regexp">    &lt;script src="bundle.js"&gt;&lt;/</span>script&gt;</span><br><span class="line">  &lt;<span class="regexp">/body&gt;</span></span><br><span class="line"><span class="regexp">&lt;/</span>html&gt;</span><br></pre></td></tr></table></figure><p>我们在<code>Greeter.js</code>中定义一个返回包含问候信息的<code>html</code>元素的函数,并依据<code>CommonJS</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></pre></td><td class="code"><pre><span class="line"><span class="comment">// Greeter.js</span></span><br><span class="line"><span class="built_in">module</span>.exports = <span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">  <span class="keyword">var</span> greet = <span class="built_in">document</span>.createElement(<span class="string">'div'</span>);</span><br><span class="line">  greet.textContent = <span class="string">"Hi there and greetings!"</span>;</span><br><span class="line">  <span class="keyword">return</span> greet;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p><code>main.js</code>文件中我们写入下述代码，用以把<code>Greeter模块</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="comment">//main.js</span></span><br><span class="line"><span class="keyword">const</span> greeter = <span class="built_in">require</span>(<span class="string">'./Greeter.js'</span>);</span><br><span class="line"><span class="built_in">document</span>.querySelector(<span class="string">"#root"</span>).appendChild(greeter());</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;最近在网上看了一些大神的webpack配置，整理收录一下&lt;br&gt;
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Html5" scheme="https://lee.js.org/tags/Html5/"/>
    
      <category term="Webpack" scheme="https://lee.js.org/tags/Webpack/"/>
    
  </entry>
  
  <entry>
    <title>Canvas</title>
    <link href="https://lee.js.org/2019/02/18/Canvas/"/>
    <id>https://lee.js.org/2019/02/18/Canvas/</id>
    <published>2019-02-18T10:22:36.000Z</published>
    <updated>2019-03-11T08:56:44.149Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>整理了一下canvas笔记。<br><a id="more"></a><br><img src="/img/Canvas.gif" alt=""></p><h2 id="canvas"><a href="#canvas" class="headerlink" title="canvas"></a>canvas</h2><ul><li>是HTML5提供的一种新标签</li><li>是一个矩形区域的画布，可以用JavaScript在上面绘画，控制其每一个像素，本身不具备绘图功能。</li><li>拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。</li></ul><p>使用：<br><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;canvas <span class="attribute">width</span>=<span class="string">"600"</span> <span class="attribute">height</span>=<span class="string">"600"</span>&gt;你的浏览器不支持canvas，请升级浏览器&lt;/canvas&gt;</span><br></pre></td></tr></table></figure></p><h2 id="canvas用途"><a href="#canvas用途" class="headerlink" title="canvas用途"></a>canvas用途</h2><ul><li>游戏：canvas在基于Web的图像显示方面比Flash更加立体、更加精巧，canvas游戏在流畅度和跨平台方面更牛。</li><li>可视化数据.数据图表话，比如:百度的echart</li><li>banner广告：Flash曾经辉煌的时代，智能手机还未曾出现。现在以及未来的智能机时代，HTML5技术能够在banner广告上发挥巨大作用，用Canvas实现动态的广告效果再合适不过。</li></ul><h3 id="canvas标签语法和属性"><a href="#canvas标签语法和属性" class="headerlink" title="canvas标签语法和属性"></a>canvas标签语法和属性</h3><ol><li>可以设置width和height属性，但是属性值单位必须是px，否则忽略，默认300*150px</li><li>不要用CSS控制它的宽和高,会造成图片拉伸，</li><li>js重新设置canvas标签的宽高属性会让画布擦除所有的内容。</li><li>可以给canvas画布设置背景色</li></ol><h3 id="canvas坐标系"><a href="#canvas坐标系" class="headerlink" title="canvas坐标系"></a>canvas坐标系</h3><p>canvas坐标系，从最左上角0,0开始。x向右增大， y向下增大<br><img src="/img/canvas-x-y.png" alt="canvas坐标系" title="canvas坐标系"></p><h2 id="Canvas-API"><a href="#Canvas-API" class="headerlink" title="Canvas API"></a>Canvas API</h2><h3 id="绘图上下文context"><a href="#绘图上下文context" class="headerlink" title="绘图上下文context"></a>绘图上下文context</h3><p>上下文：工具包，是所有的绘制操作api的入口或者集合</p><ol><li>canvas自身无法绘制任何内容。Canvas的绘图是使用JavaScript操作的。</li><li>context对象就是JavaScript操作Canvas的接口</li><li>使用getContext(‘2d’)来获取2D绘图上下文。</li></ol><figure class="highlight js"><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">var</span> canvas = <span class="built_in">document</span>.querySelector(<span class="string">'canvas'</span>);</span><br><span class="line"><span class="keyword">var</span> ctx = canvas.getContext(<span class="string">'2d'</span>);  <span class="comment">//注意：2d小写， 3d：webgl</span></span><br></pre></td></tr></table></figure><h3 id="绘制图形"><a href="#绘制图形" class="headerlink" title="绘制图形"></a>绘制图形</h3><h4 id="属性"><a href="#属性" class="headerlink" title="属性"></a>属性</h4><ul><li>lineWidth     设置线宽</li><li>strokeStyle   设置描边样式（默认黑色）</li><li>fillStyle     设置填充样式（默认黑色）</li></ul><h4 id="方法"><a href="#方法" class="headerlink" title="方法"></a>方法</h4><ul><li>moveTo(x,y)   设置绘制路径的起点（移动画笔位置）</li><li>lineTo(x,y)   画线</li><li>closePath()   闭合路径，必须闭合路径才能成功填充</li><li><p>beginPath()   开启一个新状态，基于之前的状态开启新的状态，新的状态会保持之前的设置</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">ctx.beginPath();</span><br><span class="line"><span class="comment">//开启新的状态后，当设置新的值时，只会作用于当前状态，不会影响之前的状态</span></span><br><span class="line">ctx.lindeWidth = <span class="number">2</span>;</span><br><span class="line">ctx.strokeStyle = <span class="string">'#ddd'</span>;</span><br></pre></td></tr></table></figure></li><li><p>rect(x,y,width,height) 绘制矩形路径<br>x, y是矩形左上角坐标， width和height都是以像素计（下同）</p><blockquote><p>PS: rect方法只是规划了矩形的路径，并没有填充和描边</p></blockquote></li><li><p>strokeRect(x,y,width,height)  绘制描边矩形</p></li><li>fillRect(x,y,width,height)    绘制填充矩形</li><li>stroke()      描边</li><li>fill()        填充，该方法会自动闭合路径</li><li><p>clearRect(x,y,width,height)   清除矩形区域，</p><blockquote><p>PS:重新设置canvas的宽/高也能达到清空的效果</p></blockquote></li><li><p>arc(x,y,radius,startAngle,endAngle,counterclockwise)   画圆弧/画圆</p><ul><li>x,y：圆心坐标。</li><li>radius：半径大小。</li><li>startAngle:绘制开始的角度（x轴为0度）。</li><li>endAngel:结束的角度，注意是弧度。</li><li>counterclockwise：是否是逆时针。true是逆时针，false：顺时针</li></ul></li></ul><figure class="highlight sqf"><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">rad</span> = <span class="built_in">deg</span>*Math.<span class="built_in">PI</span>/<span class="number">180</span>;</span><br><span class="line">在Math提供的方法中<span class="built_in">sin</span>、<span class="built_in">cos</span>等都使用的弧度</span><br></pre></td></tr></table></figure><p>**绘图步骤（5步）：<br><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><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">1</span>、获得画布</span><br><span class="line"><span class="keyword">var</span> canvas  = <span class="built_in">document</span>.getElementById( <span class="string">'cavsElem'</span> );</span><br><span class="line"></span><br><span class="line"><span class="number">2</span>、获得canvas上下文</span><br><span class="line"><span class="keyword">var</span> ctx = canvas.getContext( <span class="string">'2d'</span> );</span><br><span class="line"></span><br><span class="line"><span class="number">3</span>、绘制路径</span><br><span class="line"><span class="comment">//设置绘制起点（移动画笔位置）</span></span><br><span class="line">ctx.moveTo(<span class="number">100</span>,<span class="number">100</span>);</span><br><span class="line"></span><br><span class="line">ctx.lineTo(<span class="number">200</span>,<span class="number">100</span>);</span><br><span class="line">ctx.lineTo(<span class="number">100</span>,<span class="number">200</span>);</span><br><span class="line"></span><br><span class="line"><span class="number">4</span>、设置样式</span><br><span class="line"><span class="comment">//设置线宽</span></span><br><span class="line">ctx.lineWidth = <span class="number">4</span>;</span><br><span class="line"></span><br><span class="line"><span class="comment">//设置描边样式（默认黑色）</span></span><br><span class="line">ctx.strokeStyle = <span class="string">'red'</span>;</span><br><span class="line"></span><br><span class="line"><span class="comment">//设置填充样式（默认黑色）</span></span><br><span class="line">ctx.fillStyle = <span class="string">'#f60'</span>;</span><br><span class="line"></span><br><span class="line"><span class="number">5</span>、描边/填充</span><br><span class="line">ctx.stroke();</span><br><span class="line">ctx.fill();</span><br><span class="line"></span><br><span class="line">PS：fill()方法会自动闭合路径</span><br></pre></td></tr></table></figure></p><h3 id="绘制字体（了解）"><a href="#绘制字体（了解）" class="headerlink" title="绘制字体（了解）"></a>绘制字体（了解）</h3><h4 id="属性-1"><a href="#属性-1" class="headerlink" title="属性"></a>属性</h4><ul><li>font      设置或返回文本内容的当前字体属性，语法与CSS相同</li><li><p>textAlign 设置或返回文本内容的当前对齐方式</p><ul><li>start（默认）: 文本在指定的位置开始。</li><li>end : 文本在指定的位置结束。</li><li>center: 文本的中心被放置在指定的位置。</li><li>left : 文本左对齐。</li><li><p>right : 文本右对齐。</p><p><img src="/img/textAsign.png" alt="textAlign示意图" title="textAlign示意图"></p></li></ul></li><li><p>textBaseline 设置或返回在绘制文本时使用的当前文本基线</p><ul><li>alphabetic ： 默认。文本基线是普通的字母基线。</li><li>top ： 文本基线是 em 方框的顶端。。</li><li>hanging ： 文本基线是悬挂基线。</li><li>middle ： 文本基线是 em 方框的正中。</li><li>ideographic： 文本基线是em基线。</li><li><p>bottom ： 文本基线是 em 方框的底端</p><p><img src="/img/font-baseline.png" alt="textBaseline示意图" title="textBaseline示意图"></p></li></ul></li></ul><h4 id="方法-1"><a href="#方法-1" class="headerlink" title="方法"></a>方法</h4><ul><li>fillText(text,x,y)    填充字体</li><li>strokeText(text,x,y)  描边字体</li><li>measureText(text,x,y) 检测字体宽度,返回包含指定文本宽度的对象<ul><li>text:文本</li><li>x,y：绘制文字起始坐标</li></ul></li></ul><h3 id="绘制图片"><a href="#绘制图片" class="headerlink" title="绘制图片"></a>绘制图片</h3><ul><li>基本绘制图片的方式</li></ul><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">ctx.drawImage(img,x,y);</span><br><span class="line">参数：</span><br><span class="line">x,y 绘制图片左上角的坐标，</span><br><span class="line">img是绘制图片的dom对象。</span><br></pre></td></tr></table></figure><ul><li>在画布上绘制图像，并规定图像的宽度和高度</li></ul><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">ctx.drawImage(img,x,y,width,height);   </span><br><span class="line">参数：</span><br><span class="line">width 绘制图片的宽度，</span><br><span class="line">height：绘制图片的高度</span><br><span class="line"></span><br><span class="line">如果指定宽高，最好成比例，不然图片会被拉伸</span><br><span class="line">等比公式： height = 原高度*width/原宽度;</span><br></pre></td></tr></table></figure><ul><li>图片裁剪，并把裁剪完成后的那部分图片绘制到画布上</li></ul><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></pre></td><td class="code"><pre><span class="line">ctx.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);</span><br><span class="line">参数：</span><br><span class="line">sx,sy 裁剪的左上角坐标，</span><br><span class="line">swidth：裁剪图片的高度。</span><br><span class="line">sheight:裁剪的高度</span><br></pre></td></tr></table></figure><h3 id="设置阴影（了解）"><a href="#设置阴影（了解）" class="headerlink" title="设置阴影（了解）"></a>设置阴影（了解）</h3><ul><li>shadowColor ： 设置或返回用于阴影的颜色</li><li>shadowBlur ： 设置或返回用于阴影的模糊级别,数值越高，模糊程度越大 （默认为0，不模糊）</li><li>shadowOffsetX： 设置或返回阴影距形状的水平距离</li><li>shadowOffsetY： 设置或返回阴影距形状的垂直距离</li></ul><p>示例：<br><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></pre></td><td class="code"><pre><span class="line">ctx.fillStyle = <span class="string">'#fc0'</span>;</span><br><span class="line">ctx.shadowColor = <span class="string">'#333'</span>;</span><br><span class="line">ctx.shadowBlur = <span class="number">50</span>;</span><br><span class="line">ctx.shadowOffsetX = <span class="number">5</span>;</span><br><span class="line">ctx.shadowOffsetY = <span class="number">5</span>;</span><br><span class="line">ctx.fillRect(<span class="number">100</span>,<span class="number">100</span>,<span class="number">100</span>,<span class="number">100</span>);</span><br></pre></td></tr></table></figure></p><h3 id="创建渐变样式（了解）"><a href="#创建渐变样式（了解）" class="headerlink" title="创建渐变样式（了解）"></a>创建渐变样式（了解）</h3><h4 id="线性渐变"><a href="#线性渐变" class="headerlink" title="线性渐变"></a>线性渐变</h4><p>线性渐变是一个对象</p><ul><li><p>语法：ctx.createLinearGradient(x0,y0,x1,y1);<br>参数：x0,y0起始坐标，x1,y1结束坐标</p></li><li><p>addColorStop(stop,color)</p><ul><li>stop：介于 0.0 与 1.0 之间的值，表示渐变中开始与结束之间的位置</li><li>color：颜色值</li></ul></li></ul><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></pre></td><td class="code"><pre><span class="line"><span class="comment">//创建线性渐变的对象，</span></span><br><span class="line"><span class="keyword">var</span> grd=ctx.createLinearGradient(<span class="number">0</span>,<span class="number">0</span>,<span class="number">170</span>,<span class="number">0</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">//添加一个渐变颜色，</span></span><br><span class="line"><span class="comment">//参数1：0.0 与 1.0 之间的值，表示渐变中开始与结束之间的位置。</span></span><br><span class="line"><span class="comment">//参数2：具体颜色</span></span><br><span class="line">grd.addColorStop(<span class="number">0</span>,<span class="string">"black"</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">//添加一个渐变颜色</span></span><br><span class="line">grd.addColorStop(<span class="number">1</span>,<span class="string">"white"</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">//关键点，把渐变设置到 填充的样式</span></span><br><span class="line">ctx.fillStyle =grd;</span><br></pre></td></tr></table></figure><h4 id="径向渐变"><a href="#径向渐变" class="headerlink" title="径向渐变"></a>径向渐变</h4><ul><li>ctx.createRadialGradient(x0,y0,r0,x1,y1,r1);<ul><li>x0: 渐变的开始圆的 x 坐标</li><li>y0: 渐变的开始圆的 y 坐标</li><li>r0: 开始圆的半径</li><li>x1: 渐变的结束圆的 x 坐标</li><li>y1: 渐变的结束圆的 y 坐标</li><li>r1: 结束圆的半径</li></ul></li></ul><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> rlg = ctx.createRadialGradient(<span class="number">300</span>,<span class="number">300</span>,<span class="number">10</span>,<span class="number">300</span>,<span class="number">300</span>,<span class="number">200</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">//添加一个渐变颜色</span></span><br><span class="line">rlg.addColorStop(<span class="number">0</span>, <span class="string">'#ccc'</span>);</span><br><span class="line">rlg.addColorStop(<span class="number">.4</span>, <span class="string">'#efefef'</span>);</span><br><span class="line">rlg.addColorStop(<span class="number">1</span>, <span class="string">'#fff'</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">//设置 填充样式为延续渐变的样式</span></span><br><span class="line">ctx.fillStyle = rlg;</span><br><span class="line">ctx.fillRect(<span class="number">100</span>, <span class="number">100</span>, <span class="number">500</span>, <span class="number">500</span>);</span><br></pre></td></tr></table></figure><h3 id="绘制背景图（了解）"><a href="#绘制背景图（了解）" class="headerlink" title="绘制背景图（了解）"></a>绘制背景图（了解）</h3><p>ctx.createPattern(img,repeat) 方法在指定的方向内重复指定的元素了解</p><ul><li>参数一：设置平铺背景的图片的DOM节点，</li><li>参数二：背景平铺的方式。<ul><li>image ： 规定要使用的图片、画布或视频元素。</li><li>repeat ： 默认。该模式在水平和垂直方向重复。</li><li>repeat-x ： 该模式只在水平方向重复。</li><li>repeat-y ： 该模式只在垂直方向重复。</li><li>no-repeat： 该模式只显示一次（不重复）。</li></ul></li></ul><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> ctx=c.getContext(<span class="string">"2d"</span>);</span><br><span class="line"><span class="keyword">var</span> img=<span class="built_in">document</span>.getElementById(<span class="string">"lamp"</span>);</span><br><span class="line"><span class="keyword">var</span> pat=ctx.createPattern(img,<span class="string">"repeat"</span>);</span><br><span class="line">ctx.rect(<span class="number">0</span>,<span class="number">0</span>,<span class="number">150</span>,<span class="number">100</span>);</span><br><span class="line">ctx.fillStyle=pat;<span class="comment">//  把背景图设置给填充的样式</span></span><br><span class="line">ctx.fill();</span><br></pre></td></tr></table></figure><h3 id="画布变换"><a href="#画布变换" class="headerlink" title="画布变换"></a>画布变换</h3><blockquote><p>注意：画布变换仅仅是改变画布状态，不会影响之前画布上的内容</p></blockquote><ul><li><p>缩放<br>scale(scaleWidth,scaleHeight) 方法缩放当前绘图，参数为0~1的值</p></li><li><p>位移画布<br>translate(x,y) 方法重新映射画布上的 (0,0) 位置</p></li><li><p>旋转<br>rotate(angle) 方法旋转当前的绘图，注意参数是弧度</p></li></ul><h3 id="绘制环境保存和还原"><a href="#绘制环境保存和还原" class="headerlink" title="绘制环境保存和还原"></a>绘制环境保存和还原</h3><ul><li><p>ctx.save() 保存当前环境的状态<br>可以把当前绘制环境context保存到缓存中。</p></li><li><p>ctx.restore() 返回之前保存过的路径状态和属性<br>获取最近通过save()方法缓存的context</p></li></ul><h3 id="保存base64编码图片"><a href="#保存base64编码图片" class="headerlink" title="保存base64编码图片"></a>保存base64编码图片</h3><ul><li>toDataURL(type, encoderOptions);<ul><li>type，设置输出的类型，比如 image/png image/jpeg等</li><li>encoderOptions：0-1之间的数字，用于标识输出图片的品质</li></ul></li></ul><blockquote><p>PS:必须在服务器环境下使用</p></blockquote><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"><span class="keyword">var</span> canvas = <span class="built_in">document</span>.getElementById(<span class="string">"canvas"</span>);</span><br><span class="line"><span class="keyword">var</span> dataURL = canvas.toDataURL();</span><br><span class="line"><span class="keyword">var</span> img = <span class="built_in">document</span>.querySelector(<span class="string">"img"</span>);</span><br><span class="line">img.src = canvas.toDataURL(<span class="string">"image/png"</span>);<span class="comment">//将画布的内容赋值给图片的src属性</span></span><br></pre></td></tr></table></figure><h3 id="贝塞尔曲线（了解）"><a href="#贝塞尔曲线（了解）" class="headerlink" title="贝塞尔曲线（了解）"></a>贝塞尔曲线（了解）</h3><h4 id="二次方曲线"><a href="#二次方曲线" class="headerlink" title="二次方曲线"></a>二次方曲线</h4><p>quadraticCurveTo(cpx,cpy,x,y)</p><ul><li>cpx： 贝塞尔控制点的 x 坐标</li><li>cpy： 贝塞尔控制点的 y 坐标</li><li>x ： 结束点的 x 坐标</li><li>y ： 结束点的 y 坐标<br><img src="/img/quadratic.png" alt="二次方曲线示意图" title="二次方曲线示意图"></li></ul><h4 id="贝塞尔曲线"><a href="#贝塞尔曲线" class="headerlink" title="贝塞尔曲线"></a>贝塞尔曲线</h4><p>bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)</p><blockquote><p>提示：三次贝塞尔曲线需要三个点。前两个点是用于三次贝塞尔计算中的控制点，第三个点是曲线的结束点</p></blockquote><ul><li>cp1x： 第一个贝塞尔控制点的 x 坐标</li><li>cp1y： 第一个贝塞尔控制点的 y 坐标</li><li>cp2x： 第二个贝塞尔控制点的 x 坐标</li><li>cp2y： 第二个贝塞尔控制点的 y 坐标</li><li>x: 结束点的 x 坐标</li><li>y: 结束点的 y 坐标<br><img src="/img/bezier.png" alt="贝塞尔曲线示意图" title="贝塞尔曲线示意图"></li></ul><h2 id="Canvas应用"><a href="#Canvas应用" class="headerlink" title="Canvas应用"></a>Canvas应用</h2><ul><li>Echarts</li><li>Highcharts</li></ul>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;整理了一下canvas笔记。&lt;br&gt;
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Canvas" scheme="https://lee.js.org/tags/Canvas/"/>
    
      <category term="Html5" scheme="https://lee.js.org/tags/Html5/"/>
    
  </entry>
  
  <entry>
    <title>如何提升自我素养</title>
    <link href="https://lee.js.org/2019/02/11/%E5%A6%82%E4%BD%95%E6%8F%90%E5%8D%87%E8%87%AA%E6%88%91%E7%B4%A0%E5%85%BB/"/>
    <id>https://lee.js.org/2019/02/11/如何提升自我素养/</id>
    <published>2019-02-11T06:31:50.000Z</published>
    <updated>2019-07-06T10:06:11.275Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>很多女孩都说我是一个直男！！！</p><p>那么如何改变自己呢？</p><p>情操 + 情商 = 完美 ？</p><p><div id="music163player"><br>    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="280" height="86" src="//music.163.com/outchain/player?type=2&id=110761&auto=0&height=66"><br>    </iframe><br></div><br><a id="more"></a></p><p>在我们的生活中，我们不但要让我们的物质世界获得满足，作为万物灵长的我们，还应该注重我们</p><p>内心世界的渴求，去获得我们内心世界的满足，去丰富我们的精神世界，让我们的内心世界不再是</p><p>一片荒芜的沙漠，去做一个有才情的人，那么，如何去</p><p>丰富我们的精神世界呢?如何去培养我们的情操呢？</p><h2 id="情操的培养"><a href="#情操的培养" class="headerlink" title="情操的培养"></a>情操的培养</h2><h3 id="热爱读书"><a href="#热爱读书" class="headerlink" title="热爱读书"></a>热爱读书</h3><p>想要培养我们的情操，首先要热爱读书，所谓书中自有黄金屋，书中自有颜如玉，崇高的道德操守</p><p>来源于一代又一代人的积累，只有从书中汲取养分，我们才能不断的成长，才能够真正地培养和提</p><p>高我们的情操。</p><h3 id="不断反思自己"><a href="#不断反思自己" class="headerlink" title="不断反思自己"></a>不断反思自己</h3><p>想要培养自己的情操，就要不断反思自己，只有不断反思自己，才能够不断的提高自己，同时在反</p><p>思自我中，我们也在提高我们的情操，让我们更加的完善，做更好的自己。</p><h3 id="关爱他人"><a href="#关爱他人" class="headerlink" title="关爱他人"></a>关爱他人</h3><p>所以情操，就是道德操守，要想培养情操，就应该从自身出发，推己及人，像关爱自己那样去关爱</p><p>他人，只有这样才能算是一个有情操的人，因此在生活中，我们应该更多地关爱别人。</p><h3 id="宽广的胸襟"><a href="#宽广的胸襟" class="headerlink" title="宽广的胸襟"></a>宽广的胸襟</h3><p>有情操的人，他们有气度，有胸襟，不会因为他们的无意一句话而发怒，也不会因为别人无意的错</p><p>误而生气，他们懂的宽容别人。他们对自己严格要求，但他们对别人要求宽松，只有胸襟宽广的人</p><p>才能成为有情操的人。</p><h3 id="谦虚"><a href="#谦虚" class="headerlink" title="谦虚"></a>谦虚</h3><p>有情操的人，他们不会整天夸夸其谈，不会整天吹嘘自己，也不会整天奉承别人，有情操的人懂的</p><p>谦虚，他们不会自满，他们愿意接受别人的批评，所以他们能都不断提高自身的素养和情操，所以</p><p>想要做有情操的人，一定要学会谦虚。</p><h3 id="生活阅历丰富"><a href="#生活阅历丰富" class="headerlink" title="生活阅历丰富"></a>生活阅历丰富</h3><p>只有经过岁月洗礼的人，他们才能够不断丰富自己，不断提高自己，让自己变得更加优秀，同样也</p><p>只有这样才能培养自己的情操，培养情操是一个长期的过程，只有拥有丰富的生活阅历，慢慢地培</p><p>养，坚持不懈才能够做一个有情操的人。</p><h2 id="高情商的培养"><a href="#高情商的培养" class="headerlink" title="高情商的培养"></a>高情商的培养</h2><h3 id="生气的时候尽量不要说话"><a href="#生气的时候尽量不要说话" class="headerlink" title="生气的时候尽量不要说话"></a>生气的时候尽量不要说话</h3><p>人每当生气的时候，肾上腺素会大量分泌，情绪会不受控制。</p><ul><li><p>和关系不好的陌生人生气时</p><blockquote><p>和陌生人生气时会毫无顾忌的说一下难听的话甚至粗鄙之语，你讲的越多对方可能越生气，最<br>糟糕的是发生肢体冲突</p></blockquote></li><li><p>和亲人或者爱人生气时</p><blockquote><p>有时候你或者是在气头上说话没有分寸，一旦说出令人伤心的话得不偿失，毕竟是我们所亲所<br>爱，没有过不去的坎。</p></blockquote></li></ul><h3 id="说话的语气一定要和气"><a href="#说话的语气一定要和气" class="headerlink" title="说话的语气一定要和气"></a>说话的语气一定要和气</h3><p>有时候一句话不同的人说出来的效果却完全不一样呢，为什么会这样呢？正所谓伸手不打笑脸人，</p><p>你有求于人或者冒犯别人时，笑着说话不仅可以掩饰自己的尴尬，还可以让对方不对你产生抵触，</p><p>但是，记住不要做舔狗。</p><h3 id="说话要有底气"><a href="#说话要有底气" class="headerlink" title="说话要有底气"></a>说话要有底气</h3><p>吾之所爱，吾当勇敢去爱，不要表现的过于懦弱；但是不要满嘴跑火车，这样会适得其反。</p><h3 id="说话要守诚信"><a href="#说话要守诚信" class="headerlink" title="说话要守诚信"></a>说话要守诚信</h3><p>古人云：‘言必信，行必果。’，说过话就要办到，切勿失信于人。</p><h3 id="得饶人处且饶人"><a href="#得饶人处且饶人" class="headerlink" title="得饶人处且饶人"></a>得饶人处且饶人</h3><p>古人云：“人非圣贤，孰能无过，知错能改，善莫大焉。”，做人要大度，懂得宽容别人，这样别人</p><p>就会更加尊敬你，你的威望也会上升。</p><h3 id="要多读书"><a href="#要多读书" class="headerlink" title="要多读书"></a>要多读书</h3><p>古人语：“多万卷书，行万里路。”，我们可以从书中学到很多知识不断充实自己，以史为鉴，换位</p><p>思考，时刻警醒自己。</p><h3 id="不能自负，鄙视他人"><a href="#不能自负，鄙视他人" class="headerlink" title="不能自负，鄙视他人"></a>不能自负，鄙视他人</h3><p>每个人诞生下来都有自己生活的权利。或许有些人诞生在王宫贵族，名门望族，有些人诞生在十恶</p><p>不赦的杀人犯家里，不能以歧视的目光看待他人。获取你会谄媚首富之子，蔑视乞丐之子，殊不知</p><p>三十年河东，三十年河西，莫欺少年穷！有钱人终究有一天会家道中落，没钱的人会终有一天有钱</p><p>又有优势。你嘲笑别人，殊不知虎落平阳被犬欺！</p><h3 id="切勿在背后妄论别人"><a href="#切勿在背后妄论别人" class="headerlink" title="切勿在背后妄论别人"></a>切勿在背后妄论别人</h3><p>古人云：“君子坦荡荡，小人常戚戚。”，在背后嚼舌根是小人行径，你妄论的人在得知你的言语之</p><p>后，只会使你们的关系更加糟糕。</p><h3 id="不要记仇"><a href="#不要记仇" class="headerlink" title="不要记仇"></a>不要记仇</h3><p>古人云：“宰相肚里能撑船”，“海纳百川，有容乃大”，宽阔的胸怀和胸襟是一个高情操的人所必需</p><p>的优秀品质。</p><h3 id="切勿以己之任，加之彼身"><a href="#切勿以己之任，加之彼身" class="headerlink" title="切勿以己之任，加之彼身"></a>切勿以己之任，加之彼身</h3><p>古人云：“人无完人，金无赤足。”，或许你自己在某方面很优秀，但是别人不如你，你不能够按照</p><p>自己的标准要求别人。或许别人某些方面比你优秀呢，换位思考一下呢？是不是有一些强人所难？</p><h3 id="己所不欲勿施于人"><a href="#己所不欲勿施于人" class="headerlink" title="己所不欲勿施于人"></a>己所不欲勿施于人</h3><p>自己都做不到的不要强加与别人</p><h3 id="尊老爱幼"><a href="#尊老爱幼" class="headerlink" title="尊老爱幼"></a>尊老爱幼</h3><h3 id="位卑未敢忘忧国"><a href="#位卑未敢忘忧国" class="headerlink" title="位卑未敢忘忧国"></a>位卑未敢忘忧国</h3><h3 id="每日三省吾身"><a href="#每日三省吾身" class="headerlink" title="每日三省吾身"></a>每日三省吾身</h3><h3 id="自我勉励，不可妄自菲薄，我能行！"><a href="#自我勉励，不可妄自菲薄，我能行！" class="headerlink" title="自我勉励，不可妄自菲薄，我能行！"></a>自我勉励，不可妄自菲薄，我能行！</h3>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;很多女孩都说我是一个直男！！！&lt;/p&gt;
&lt;p&gt;那么如何改变自己呢？&lt;/p&gt;
&lt;p&gt;情操 + 情商 = 完美 ？&lt;/p&gt;
&lt;p&gt;&lt;div id=&quot;music163player&quot;&gt;&lt;br&gt;    &lt;iframe frameborder=&quot;no&quot; border=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; width=&quot;280&quot; height=&quot;86&quot; src=&quot;//music.163.com/outchain/player?type=2&amp;id=110761&amp;auto=0&amp;height=66&quot;&gt;&lt;br&gt;    &lt;/iframe&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;
    
    </summary>
    
      <category term="Essay" scheme="https://lee.js.org/categories/Essay/"/>
    
    
      <category term="For Myself" scheme="https://lee.js.org/tags/For-Myself/"/>
    
  </entry>
  
  <entry>
    <title>hexo常用命令笔记</title>
    <link href="https://lee.js.org/2019/01/29/hexo%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E7%AC%94%E8%AE%B0/"/>
    <id>https://lee.js.org/2019/01/29/hexo常用命令笔记/</id>
    <published>2019-01-29T10:18:54.000Z</published>
    <updated>2019-03-08T04:05:14.578Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>重新整理了一下hexo命令</p><div id="music163player"><br>    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="280" height="86" src="//music.163.com/outchain/player?type=2&id=167879&auto=0&height=66"><br>    </iframe><br></div><a id="more"></a><h2 id="hexo"><a href="#hexo" class="headerlink" title="hexo"></a>hexo</h2> <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></pre></td><td class="code"><pre><span class="line">npm install hexo -g #安装  </span><br><span class="line">npm update hexo -g #升级  </span><br><span class="line">hexo init #初始化</span><br></pre></td></tr></table></figure><h2 id="简写"><a href="#简写" class="headerlink" title="简写"></a>简写</h2>  <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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">hexo n &quot;我的博客&quot; == hexo new &quot;我的博客&quot; #新建文章</span><br><span class="line">hexo p == hexo publish</span><br><span class="line">hexo g == hexo generate#生成</span><br><span class="line">hexo s == hexo server #启动服务预览</span><br><span class="line">hexo d == hexo deploy#部署</span><br></pre></td></tr></table></figure><h2 id="服务器"><a href="#服务器" class="headerlink" title="服务器"></a>服务器</h2>  <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">hexo server #Hexo 会监视文件变动并自动更新，您无须重启服务器。</span><br><span class="line">hexo server -s #静态模式</span><br><span class="line">hexo server -p 5000 #更改端口</span><br><span class="line">hexo server -i 192.168.1.1 #自定义 IP</span><br></pre></td></tr></table></figure>  <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></pre></td><td class="code"><pre><span class="line">hexo clean #清除缓存 网页正常情况下可以忽略此条命令</span><br><span class="line">hexo g #生成静态网页</span><br><span class="line">hexo d #开始部署</span><br></pre></td></tr></table></figure><h2 id="监视文件变动"><a href="#监视文件变动" class="headerlink" title="监视文件变动"></a>监视文件变动</h2>  <figure class="highlight plain"><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">hexo generate #使用 Hexo 生成静态文件快速而且简单</span><br><span class="line">hexo generate --watch #监视文件变动</span><br></pre></td></tr></table></figure><h2 id="完成后部署"><a href="#完成后部署" class="headerlink" title="完成后部署"></a>完成后部署</h2><pre><code>两个命令的作用是相同的</code></pre>  <figure class="highlight plain"><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">hexo generate --deploy</span><br><span class="line">hexo deploy --generate</span><br></pre></td></tr></table></figure>  <figure class="highlight plain"><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">hexo deploy -g</span><br><span class="line">hexo server -g</span><br></pre></td></tr></table></figure><h2 id="草稿"><a href="#草稿" class="headerlink" title="草稿"></a>草稿</h2>  <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">hexo publish [layout] &lt;title&gt;</span><br></pre></td></tr></table></figure><h2 id="模板"><a href="#模板" class="headerlink" title="模板"></a>模板</h2>  <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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">hexo new &quot;postName&quot; #新建文章</span><br><span class="line">hexo new page &quot;pageName&quot; #新建页面</span><br><span class="line">hexo generate #生成静态页面至public目录</span><br><span class="line">hexo server #开启预览访问端口（默认端口4000，&apos;ctrl + c&apos;关闭server）</span><br><span class="line">hexo deploy #将.deploy目录部署到GitHub</span><br></pre></td></tr></table></figure>  <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></pre></td><td class="code"><pre><span class="line">hexo new [layout] &lt;title&gt;</span><br><span class="line">hexo new photo &quot;My Gallery&quot;</span><br><span class="line">hexo new &quot;Hello World&quot; --lang tw</span><br></pre></td></tr></table></figure><table><thead><tr><th>变量</th><th>描述</th></tr></thead><tbody><tr><td>layout</td><td>布局</td></tr><tr><td>title</td><td>标题</td></tr><tr><td>date</td><td>文件建立日期</td></tr></tbody></table>  <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><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">title: 使用Hexo搭建个人博客</span><br><span class="line">layout: post</span><br><span class="line">date: 2014-03-03 19:07:43</span><br><span class="line">comments: true</span><br><span class="line">categories: Blog</span><br><span class="line">tags: [Hexo]</span><br><span class="line">keywords: Hexo, Blog</span><br><span class="line">description: 生命在于折腾，又把博客折腾到Hexo了。给Hexo点赞。</span><br></pre></td></tr></table></figure><h2 id="模版（Scaffold）"><a href="#模版（Scaffold）" class="headerlink" title="模版（Scaffold）"></a>模版（Scaffold）</h2><p>  hexo new photo “My Gallery”</p><table><thead><tr><th>变量</th><th>描述</th></tr></thead><tbody><tr><td>layout</td><td>布局</td></tr><tr><td>title</td><td>标题</td></tr><tr><td>date</td><td>文件建立日期</td></tr></tbody></table><h2 id="设置文章摘要"><a href="#设置文章摘要" class="headerlink" title="设置文章摘要"></a>设置文章摘要</h2>  <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">以上是文章摘要 &lt;!--more--&gt; 以下是余下全文</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;重新整理了一下hexo命令&lt;/p&gt;
&lt;div id=&quot;music163player&quot;&gt;&lt;br&gt;    &lt;iframe frameborder=&quot;no&quot; border=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; width=&quot;280&quot; height=&quot;86&quot; src=&quot;//music.163.com/outchain/player?type=2&amp;id=167879&amp;auto=0&amp;height=66&quot;&gt;&lt;br&gt;    &lt;/iframe&gt;&lt;br&gt;&lt;/div&gt;
    
    </summary>
    
      <category term="Essay" scheme="https://lee.js.org/categories/Essay/"/>
    
    
      <category term="Hexo" scheme="https://lee.js.org/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Java特性</title>
    <link href="https://lee.js.org/2019/01/23/Java%E7%89%B9%E6%80%A7/"/>
    <id>https://lee.js.org/2019/01/23/Java特性/</id>
    <published>2019-01-23T04:03:17.000Z</published>
    <updated>2019-03-08T04:05:13.713Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>开始学习Java了</p><a id="more"></a><h2 id="主要特性"><a href="#主要特性" class="headerlink" title="主要特性"></a>主要特性</h2><h3 id="Java语言是简单的："><a href="#Java语言是简单的：" class="headerlink" title="Java语言是简单的："></a>Java语言是简单的：</h3><p>Java语言的语法与C语言和C++语言很接近，使得大多数程序员很容易学习</p><p>和使用。另一方面，Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性，如操作符重载、多继承、自动的强制类型转换。特别地，Java语言不使用指针，而是引用。并提供了自动的废料收集，使得程序员不必为内存管理而担忧。</p><h3 id="Java语言是面向对象的："><a href="#Java语言是面向对象的：" class="headerlink" title="Java语言是面向对象的："></a>Java语言是面向对象的：</h3><p>Java语言提供类、接口和继承等面向对象的特性，为了简单起见，只支持类之间的单继承，但支持接口之间的多继承，并支持类与接口之间的实现机制（关键字为implements）。Java语言全面支持动态绑定，而C++语言只对虚函数使用动态绑定。总之，Java语言是一个纯的面向对象程序设计语言。</p><h3 id="Java语言是分布式的："><a href="#Java语言是分布式的：" class="headerlink" title="Java语言是分布式的："></a>Java语言是分布式的：</h3><p>Java语言支持Internet应用的开发，在基本的Java应用编程接口中有一个网络应用编程接口（java net），它提供了用于网络应用编程的类库，包括URL、URLConnection、Socket、ServerSocket等。Java的RMI（远程方法激活）机制也是开发分布式应用的重要手段。</p><h3 id="Java语言是健壮的："><a href="#Java语言是健壮的：" class="headerlink" title="Java语言是健壮的："></a>Java语言是健壮的：</h3><p>Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。</p><h3 id="Java语言是安全的："><a href="#Java语言是安全的：" class="headerlink" title="Java语言是安全的："></a>Java语言是安全的：</h3><p>Java通常被用在网络环境中，为此，Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外，Java对通过网络下载的类具有一个安全防范机制（类ClassLoader），如分配不同的名字空间以防替代本地的同名类、字节代码检查，并提供安全管理机制（类SecurityManager）让Java应用设置安全哨兵。</p><h3 id="Java语言是体系结构中立的："><a href="#Java语言是体系结构中立的：" class="headerlink" title="Java语言是体系结构中立的："></a>Java语言是体系结构中立的：</h3><p>Java程序（后缀为java的文件）在Java平台上被编译为体系结构中立的字节码格式（后缀为class的文件），然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。</p><h3 id="Java语言是可移植的："><a href="#Java语言是可移植的：" class="headerlink" title="Java语言是可移植的："></a>Java语言是可移植的：</h3><p>这种可移植性来源于体系结构中立性，另外，Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性，Java编译器是用Java实现的，Java的运行环境是用ANSI C实现的。</p><h3 id="Java语言是解释型的："><a href="#Java语言是解释型的：" class="headerlink" title="Java语言是解释型的："></a>Java语言是解释型的：</h3><p>如前所述，Java程序在Java平台上被编译为字节码格式，然后可以在实现这个Java平台的任何系统中运行。在运行时，Java平台中的Java解释器对这些字节码进行解释执行，执行过程中需要的类在联接阶段被载入到运行环境中。</p><h3 id="Java是高性能的："><a href="#Java是高性能的：" class="headerlink" title="Java是高性能的："></a>Java是高性能的：</h3><p>与那些解释型的高级脚本语言相比，Java的确是高性能的。事实上，Java的运行速度随着JIT(Just-In-Time）编译器技术的发展越来越接近于C++。</p><h3 id="Java语言是多线程的："><a href="#Java语言是多线程的：" class="headerlink" title="Java语言是多线程的："></a>Java语言是多线程的：</h3><p>在Java语言中，线程是一种特殊的对象，它必须由Thread类或其子（孙）类来创建。通常有两种方法来创建线程：其一，使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程，其二，从Thread类派生出子类并重写run方法，使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口，因此，任何一个线程均有它的run方法，而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行，并提供多线程之间的同步机制（关键字为synchronized）。</p><h3 id="Java语言是动态的："><a href="#Java语言是动态的：" class="headerlink" title="Java语言是动态的："></a>Java语言是动态的：</h3><p>Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境，也可以通过网络来载入所需要的类。这也有利于软件的升级。另外，Java中的类有一个运行时刻的表示，能进行运行时刻的类型检查。</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;开始学习Java了&lt;/p&gt;
    
    </summary>
    
      <category term="Essay" scheme="https://lee.js.org/categories/Essay/"/>
    
      <category term="Java" scheme="https://lee.js.org/categories/Essay/Java/"/>
    
    
      <category term="Java" scheme="https://lee.js.org/tags/Java/"/>
    
  </entry>
  
  <entry>
    <title>Markdown教程</title>
    <link href="https://lee.js.org/2019/01/15/Markdown%E6%95%99%E7%A8%8B/"/>
    <id>https://lee.js.org/2019/01/15/Markdown教程/</id>
    <published>2019-01-15T10:22:37.000Z</published>
    <updated>2019-03-08T04:05:15.561Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>想写博客记录自己学习的点点滴滴吗？点开这里 =&gt;<a href="https://github.com/Lee981265/Free-Style/blob/master/Markdown.md" target="_blank" rel="noopener"><strong><em>传送门</em></strong></a><a id="more"></a></p><h2 id="Guide"><a href="#Guide" class="headerlink" title="Guide"></a>Guide</h2><p>这是一篇讲解如何正确使用 <strong>Markdown</strong> 的排版示例，学会这个很有必要，能让你的文章有更佳清晰的排版。</p><blockquote><p>引用文本：Markdown is a text formatting syntax inspired</p></blockquote><h2 id="语法指导"><a href="#语法指导" class="headerlink" title="语法指导"></a>语法指导</h2><h3 id="普通内容"><a href="#普通内容" class="headerlink" title="普通内容"></a>普通内容</h3><p>这段内容展示了在内容里面一些小的格式，比如：</p><ul><li><strong>加粗</strong> - <code>**加粗**</code></li><li><em>倾斜</em> - <code>*倾斜*</code></li><li><del>删除线</del> - <code>~~删除线~~</code></li><li><code>Code 标记</code> - <code>Code 标记</code></li><li><a href="https://github.com" target="_blank" rel="noopener">超级链接</a> - <code>[超级链接](https://github.com)</code></li><li><a href="mailto:username@gmail.com" target="_blank" rel="noopener">username@gmail.com</a> - <code>[username@gmail.com](mailto:username@gmail.com)</code></li></ul><h3 id="表情符号-Emoji"><a href="#表情符号-Emoji" class="headerlink" title="表情符号 Emoji"></a>表情符号 Emoji</h3><p>支持大部分标准的表情符号，可使用输入法直接输入</p><h4 id="一些表情例子"><a href="#一些表情例子" class="headerlink" title="一些表情例子"></a>一些表情例子</h4><p>:smile: :laughing: :dizzy_face: :sob: :cold_sweat: :sweat_smile:  :cry: :triumph: :heart_eyes: :relaxed:<br>:+1: :-1: :100: :clap: :bell: :gift: :question: :bomb: :heart: :coffee: :cyclone: :bow: :kiss: :pray: :anger:</p><p>效果如图所示：</p><p><div align="center"><img src="/img/emoji.png" alt="表情符号"></div></p><h3 id="大标题-Heading-3"><a href="#大标题-Heading-3" class="headerlink" title="大标题 - Heading 3"></a>大标题 - Heading 3</h3><p>你可以选择使用 H1 至 H6，使用 ##(N) 打头。</p><blockquote><p>NOTE: 别忘了 # 后面需要有空格！</p></blockquote><h4 id="Heading-4"><a href="#Heading-4" class="headerlink" title="Heading 4"></a>Heading 4</h4><h5 id="Heading-5"><a href="#Heading-5" class="headerlink" title="Heading 5"></a>Heading 5</h5><h6 id="Heading-6"><a href="#Heading-6" class="headerlink" title="Heading 6"></a>Heading 6</h6><h3 id="图片"><a href="#图片" class="headerlink" title="图片"></a>图片</h3><figure class="highlight markdown"><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="string">alt 文本</span>](<span class="link">https://lee981265.github.io/img/Leebolg.png</span>)</span><br><span class="line">![<span class="string">alt 文本</span>](<span class="link">https://lee981265.github.io/img/Leebolg.png "图片 Title 值"</span>)</span><br></pre></td></tr></table></figure><p>效果如图所示：</p><p><img alt="lee" src="https://lee981265.github.io/img/Leebolg.png" width="240" height="275"><br>支持复制粘贴直接上传。</p><h3 id="代码块"><a href="#代码块" class="headerlink" title="代码块"></a>代码块</h3><h4 id="普通"><a href="#普通" class="headerlink" title="普通"></a>普通</h4><figure class="highlight markdown"><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="emphasis">*emphasize*</span>    <span class="strong">**strong**</span></span><br><span class="line"><span class="emphasis">_emphasize_</span>    <span class="strong">__strong__</span></span><br><span class="line">var a = 1</span><br></pre></td></tr></table></figure><h4 id="语法高亮支持"><a href="#语法高亮支持" class="headerlink" title="语法高亮支持"></a>语法高亮支持</h4><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><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></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">##### 演示 Go 代码高亮</span><br><span class="line"></span><br><span class="line">```Go</span><br><span class="line">package main</span><br><span class="line"></span><br><span class="line">import &quot;fmt&quot;</span><br><span class="line"></span><br><span class="line">func main() &#123;</span><br><span class="line">fmt.Println(&quot;Hello, 世界&quot;)</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p><h5 id="演示-Java-高亮"><a href="#演示-Java-高亮" class="headerlink" title="演示 Java 高亮"></a>演示 Java 高亮</h5><figure class="highlight java"><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">public</span> <span class="class"><span class="keyword">class</span> <span class="title">HelloWorld</span> </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> </span>&#123;</span><br><span class="line">        System.out.println(<span class="string">"Hello World!"</span>);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>效果如图所示：</p><p><div align="center"><img src="/img/go.png" alt="Go"></div></p><p><div align="center"><img src="/img/java.png" alt="Java"></div></p><blockquote><p>Tip: 语言名称支持下面这些: <code>ruby</code>, <code>python</code>, <code>js</code>, <code>html</code>, <code>erb</code>, <code>css</code>, <code>coffee</code>, <code>bash</code>, <code>json</code>, <code>yml</code>, <code>xml</code> …</p></blockquote><h3 id="有序、无序列表"><a href="#有序、无序列表" class="headerlink" title="有序、无序列表"></a>有序、无序列表</h3><h4 id="无序列表"><a href="#无序列表" class="headerlink" title="无序列表"></a>无序列表</h4><ul><li>Java<ul><li>Spring<ul><li>IoC</li><li>AOP</li></ul></li></ul></li><li>Go<ul><li>gofmt</li><li>Wide</li></ul></li><li>Node.js<ul><li>Koa</li><li>Express</li></ul></li></ul><h4 id="有序列表"><a href="#有序列表" class="headerlink" title="有序列表"></a>有序列表</h4><ol><li>Node.js<br>1.1. Express<br>1.2. Koa<br>1.3. Sails</li><li>Go<br>2.1. gofmt<br>2.2. Wide</li><li>Java<br>3.1. Latke<br>3.2. IDEA</li></ol><h3 id="表格"><a href="#表格" class="headerlink" title="表格"></a>表格</h3><p>如果需要展示数据什么的，可以选择使用表格。</p><table><thead><tr><th>header 1</th><th>header 3</th></tr></thead><tbody><tr><td>cell 1</td><td>cell 2</td></tr><tr><td>cell 3</td><td>cell 4</td></tr><tr><td>cell 5</td><td>cell 6</td></tr></tbody></table><h3 id="隐藏细节"><a href="#隐藏细节" class="headerlink" title="隐藏细节"></a>隐藏细节</h3><details><br><summary>Summary</summary><br>Details<br></details><h3 id="段落"><a href="#段落" class="headerlink" title="段落"></a>段落</h3><p>留空白的换行，将会被自动转换成一个段落，会有一定的段落间距，便于阅读。</p><p>请注意后面 Markdown 源代码的换行留空情况。</p><h3 id="数学公式"><a href="#数学公式" class="headerlink" title="数学公式"></a>数学公式</h3><p>$$a^2 + b^2 = \color{red}c^2$$</p><p>效果如图所示：</p><p><div align="center"><img src="/img/Qmath.png" alt="数学公式"></div></p><h3 id="复选框"><a href="#复选框" class="headerlink" title="复选框"></a>复选框</h3><p>command line  </p><ul><li style="list-style: none"><input type="checkbox"> initiate  </li><li style="list-style: none"><input type="checkbox"> participate  </li><li style="list-style: none"><input type="checkbox"> redeem  </li><li style="list-style: none"><input type="checkbox"> refund  </li></ul><p>doc  </p><ul><li style="list-style: none"><input type="checkbox" checked> ReadMe</li><li style="list-style: none"><input type="checkbox" checked> ReadMe_CN</li></ul><h3 id="流程图"><a href="#流程图" class="headerlink" title="流程图"></a>流程图</h3><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><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">st=&gt;start: Start</span><br><span class="line">op=&gt;operation: Your Operation</span><br><span class="line">cond=&gt;condition: Yes or No?</span><br><span class="line">e=&gt;end</span><br><span class="line"></span><br><span class="line">st-&gt;op-&gt;cond</span><br><span class="line">cond(yes)-&gt;e</span><br><span class="line">cond(no)-&gt;op</span><br></pre></td></tr></table></figure><p>效果如图所示：</p><p><div align="center"><img src="/img/流程图.png" alt="流程图"></div></p><h3 id="时序图"><a href="#时序图" class="headerlink" title="时序图"></a>时序图</h3><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></pre></td><td class="code"><pre><span class="line">张三-&gt;李四: 嘿，小四儿, 写博客了没?</span><br><span class="line">Note right of 李四: 李四愣了一下，说：</span><br><span class="line">李四--&gt;张三: 忙得吐血，哪有时间写。</span><br></pre></td></tr></table></figure><p>效果如图所示：</p><p><div align="center"><img src="/img/时序图.png" alt="时序图"></div></p><h3 id="2019"><a href="#2019" class="headerlink" title="2019"></a>2019</h3><p>弹指间2018悄然溜走，我也在昨天渡过22岁生日。新的一年祝大家好运常来，在2019我决定开始学习python和java，也会在这里和大家分享一下我踩过的坑和笔记。<strong><em>2019加油！</em></strong> :smirk_cat:）</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;想写博客记录自己学习的点点滴滴吗？点开这里 =&amp;gt;&lt;a href=&quot;https://github.com/Lee981265/Free-Style/blob/master/Markdown.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;&lt;em&gt;传送门&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
    
    </summary>
    
      <category term="Essay" scheme="https://lee.js.org/categories/Essay/"/>
    
    
      <category term="Markdown" scheme="https://lee.js.org/tags/Markdown/"/>
    
  </entry>
  
  <entry>
    <title>Vue路由传参三种基本方式</title>
    <link href="https://lee.js.org/2018/12/11/Vue%E8%B7%AF%E7%94%B1%E4%BC%A0%E5%8F%82%E4%B8%89%E7%A7%8D%E5%9F%BA%E6%9C%AC%E6%96%B9%E5%BC%8F/"/>
    <id>https://lee.js.org/2018/12/11/Vue路由传参三种基本方式/</id>
    <published>2018-12-11T11:56:26.000Z</published>
    <updated>2019-03-08T04:04:41.182Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>Vue路由传参的三种基本方式<br><a id="more"></a></p><p>现有如下场景，点击父组件的li元素跳转到子组件中，并携带参数，便于子组件获取数据。<br>父组件中：</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">&lt;li v-<span class="keyword">for</span>=<span class="string">"article in articles"</span> @click=<span class="string">"getDescribe(article.id)"</span>&gt;</span><br></pre></td></tr></table></figure><p>methods：</p><h2 id="case1"><a href="#case1" class="headerlink" title="case1"></a>case1</h2><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></pre></td><td class="code"><pre><span class="line">getDescribe(id) &#123;</span><br><span class="line"><span class="comment">//直接调用$router.push 实现携带参数的跳转</span></span><br><span class="line">  <span class="keyword">this</span>.$router.push(&#123;</span><br><span class="line">    path: <span class="string">`/describe/<span class="subst">$&#123;id&#125;</span>`</span>,</span><br><span class="line">  &#125;)</span><br></pre></td></tr></table></figure><p>case1需要对应路由配置如下：</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></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line"> path: <span class="string">'/describe/:id'</span>,</span><br><span class="line"> name: <span class="string">'Describe'</span>,</span><br><span class="line"> component: Describe</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>很显然，需要在path中添加/:id来对应 $router.push 中path携带的参数。在子组件中可以使用来获取传递的参数值。<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">$route.params.id</span><br></pre></td></tr></table></figure></p><h2 id="case2"><a href="#case2" class="headerlink" title="case2"></a>case2</h2><p>父组件中：通过路由属性中的name来确定匹配的路由，通过params来传递参数。</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">this</span>.$router.push(&#123;</span><br><span class="line">   name: <span class="string">'Describe'</span>,</span><br><span class="line">   params: &#123;</span><br><span class="line">     id: id</span><br><span class="line">   &#125;</span><br><span class="line"> &#125;)</span><br></pre></td></tr></table></figure><p> 对应路由配置: 注意这里不能使用:/id来传递参数了，因为父组件中，已经使用params来携带参数了。</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></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">    path: <span class="string">'/describe'</span>,</span><br><span class="line">    name: <span class="string">'Describe'</span>,</span><br><span class="line">    component: Describe</span><br><span class="line">&#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></pre></td><td class="code"><pre><span class="line">$route.params.id</span><br></pre></td></tr></table></figure><h2 id="case3"><a href="#case3" class="headerlink" title="case3"></a>case3</h2><p>父组件：使用path来匹配路由，然后通过query来传递参数<br>这种情况下 query传递的参数会显示在url后面?id=？</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">this</span>.$router.push(&#123;</span><br><span class="line">      path: <span class="string">'/describe'</span>,</span><br><span class="line">      query: &#123;</span><br><span class="line">        id: id</span><br><span class="line">      &#125;</span><br><span class="line">    &#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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">     path: <span class="string">'/describe'</span>,</span><br><span class="line">     name: <span class="string">'Describe'</span>,</span><br><span class="line">     component: Describe</span><br><span class="line">&#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></pre></td><td class="code"><pre><span class="line">$route.query.id</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Vue路由传参的三种基本方式&lt;br&gt;
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Vue" scheme="https://lee.js.org/tags/Vue/"/>
    
      <category term="vue-router" scheme="https://lee.js.org/tags/vue-router/"/>
    
  </entry>
  
  <entry>
    <title>Sql语句</title>
    <link href="https://lee.js.org/2018/10/16/Sql%E8%AF%AD%E5%8F%A5/"/>
    <id>https://lee.js.org/2018/10/16/Sql语句/</id>
    <published>2018-10-16T02:46:06.000Z</published>
    <updated>2019-03-08T04:05:06.310Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>Sql语句大全<br><a id="more"></a></p><h2 id="基础"><a href="#基础" class="headerlink" title="基础"></a>基础</h2><ol><li>说明：创建数据库</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">CREATE</span> <span class="keyword">DATABASE</span> <span class="keyword">database</span>-<span class="keyword">name</span></span><br></pre></td></tr></table></figure><ol start="2"><li>说明：删除数据库</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">drop</span> <span class="keyword">database</span> dbname</span><br></pre></td></tr></table></figure><ol start="3"><li>说明：备份sql server<br>— 创建 备份数据的 device</li></ol><figure class="highlight sql"><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">USE</span> <span class="keyword">master</span></span><br><span class="line">EXEC sp_addumpdevice <span class="string">'disk'</span>, <span class="string">'testBack'</span>, <span class="string">'c:\mssql7backup\MyNwind_1.dat'</span></span><br></pre></td></tr></table></figure><p><em>开始 备份</em></p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">BACKUP</span> <span class="keyword">DATABASE</span> pubs <span class="keyword">TO</span> testBack</span><br></pre></td></tr></table></figure><ol start="4"><li>说明：创建新表</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">create</span> <span class="keyword">table</span> tabname(col1 type1 [<span class="keyword">not</span> <span class="literal">null</span>] [primary <span class="keyword">key</span>],col2 type2 [<span class="keyword">not</span> <span class="literal">null</span>],..)</span><br></pre></td></tr></table></figure><p><em>根据已有的表创建新表：</em><br>A：<strong><em>create table tab_new like tab_old</em></strong> (使用旧表创建新表)<br>B：<strong><em>create table tab_new as select col1,col2… from tab_old definition only</em></strong></p><ol start="5"><li>说明：删除新表</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">drop</span> <span class="keyword">table</span> tabname</span><br></pre></td></tr></table></figure><ol start="6"><li>说明：增加一个列</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">Alter</span> <span class="keyword">table</span> tabname <span class="keyword">add</span> <span class="keyword">column</span> <span class="keyword">col</span> <span class="keyword">type</span></span><br></pre></td></tr></table></figure><blockquote><p>注：列增加后将不能删除。DB2中列加上后数据类型也不能改变，唯一能改变的是增加varchar类型的长度。</p></blockquote><ol start="7"><li><p>说明：添加主键： <strong><em>Alter table tabname add primary key(col)</em></strong><br>说明：删除主键： <strong><em>Alter table tabname drop primary key(col)</em></strong></p><blockquote></blockquote></li><li><p>说明：创建索引：<strong><em>create [unique] index idxname on tabname(col….)</em></strong><br>删除索引：<strong><em>drop index idxname</em></strong></p><blockquote><p>注：索引是不可更改的，想更改必须删除重新建。</p></blockquote></li><li><p>说明：创建视图：<strong><em>create view viewname as select statement</em></strong><br>删除视图：<strong><em>drop view viewname</em></strong></p><blockquote></blockquote></li><li><p>说明：几个简单的基本的sql语句</p></li></ol><p>选择：<strong><em>select </em> from table1 where 范围*</strong><br>插入：<strong><em>insert into table1(field1,field2) values(value1,value2)</em></strong><br>删除：<strong><em>delete from table1 where 范围</em></strong><br>更新：<strong><em>update table1 set field1=value1 where 范围</em></strong><br>查找：<strong><em>select </em> from table1 where field1 like ’%value1%’*</strong> —like的语法很精妙，查资料!<br>排序：<strong><em>select </em> from table1 order by field1,field2 [desc]*</strong><br>总数：<strong><em>select count as totalcount from table1</em></strong><br>求和：<strong><em>select sum(field1) as sumvalue from table1</em></strong><br>平均：<strong><em>select avg(field1) as avgvalue from table1</em></strong><br>最大：<strong><em>select max(field1) as maxvalue from table1</em></strong><br>最小：<strong><em>select min(field1) as minvalue from table1</em></strong></p><blockquote></blockquote><ol start="11"><li>说明：几个高级查询运算词<br>A： <strong><em>UNION</em></strong> 运算符</li></ol><blockquote><p>UNION 运算符通过组合其他两个结果表（例如 TABLE1 和 TABLE2）并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时（即 UNION ALL），不消除重复行。两种情况下，派生表的每一行不是来自 TABLE1 就是来自 TABLE2。</p></blockquote><p>B： <strong><em>EXCEPT</em></strong> 运算符</p><blockquote><p>EXCEPT运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL)，不消除重复行。</p></blockquote><p>C： <strong><em>INTERSECT</em></strong> 运算符</p><blockquote><p>INTERSECT运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL随 INTERSECT 一起使用时 (INTERSECT ALL)，不消除重复行。</p></blockquote><p><em>注：使用运算词的几个查询结果行必须是一致的。</em></p><ol start="12"><li>说明：使用外连接<br>A、<strong><em>left （outer） join</em></strong>：<br>左外连接（左连接）：结果集几包括连接表的匹配行，也包括左连接表的所有行。<br>SQL:<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> a.a, a.b, a.c, b.c, b.d, b.f <span class="keyword">from</span> a <span class="keyword">LEFT</span> <span class="keyword">OUT</span> <span class="keyword">JOIN</span> b <span class="keyword">ON</span> a.a = b.c</span><br></pre></td></tr></table></figure></li></ol><p>B：<strong><em>right （outer） join</em></strong>:</p><blockquote><p>右外连接(右连接)：结果集既包括连接表的匹配连接行，也包括右连接表的所有行。</p></blockquote><p>C：<strong><em>full/cross （outer） join</em></strong>：</p><blockquote><p>全外连接：不仅包括符号连接表的匹配行，还包括两个连接表中的所有记录。</p></blockquote><p>12、分组:<strong><em>Group by</em></strong>:</p><blockquote><p>一张表，一旦分组 完成后，查询后只能得到组相关的信息。<br>    组相关的信息：（统计信息） <strong><em>count,sum,max,min,avg</em></strong>  分组的标准)<br>    在SQLServer中分组时：不能以 <strong><em>text,ntext,image</em></strong> 类型的字段作为分组依据<br>   在selecte统计函数中的字段，不能和普通的字段放在一起；</p></blockquote><p>13、对数据库进行操作：</p><blockquote><p>分离数据库： <strong><em>sp_detach_db</em></strong>;<br>   附加数据库：<strong><em>sp_attach_db</em></strong> 后接表明，附加需要完整的路径名</p></blockquote><p>14.如何修改数据库的名称:</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sp_renamedb 'old_name', 'new_name'</span><br></pre></td></tr></table></figure><h2 id="提升"><a href="#提升" class="headerlink" title="提升"></a>提升</h2><ol><li>说明：复制表(只复制结构,源表名：a 新表名：b) (Access可用)</li></ol><blockquote><p>法一：<strong><em>select </em> into b from a where 1&lt;&gt;1*</strong>（仅用于SQlServer）<br>法二：<strong><em>select top 0 </em> into b from a*</strong></p></blockquote><ol start="2"><li>说明：拷贝表(拷贝数据,源表名：a 目标表名：b) (Access可用)</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">insert</span> <span class="keyword">into</span> b(a, b, c) <span class="keyword">select</span> d,e,f <span class="keyword">from</span> b;</span><br></pre></td></tr></table></figure><ol start="3"><li>说明：跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">insert</span> <span class="keyword">into</span> b(a, b, c) <span class="keyword">select</span> d,e,f <span class="keyword">from</span> b <span class="keyword">in</span> ‘具体数据库’ <span class="keyword">where</span> 条件</span><br></pre></td></tr></table></figure><blockquote><p>例子： <strong><em>..from b in ‘“&amp;Server.MapPath(“.”)&amp;”\data.mdb” &amp;”‘ where..</em></strong></p></blockquote><ol start="4"><li>说明：子查询(表名1：a 表名2：b)</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> a,b,c <span class="keyword">from</span> a <span class="keyword">where</span> a <span class="keyword">IN</span> (<span class="keyword">select</span> d <span class="keyword">from</span> b ) 或者: <span class="keyword">select</span> a,b,c <span class="keyword">from</span> a <span class="keyword">where</span> a <span class="keyword">IN</span> (<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>)</span><br></pre></td></tr></table></figure><ol start="5"><li>说明：显示文章、提交人和最后回复时间</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> a.title,a.username,b.adddate <span class="keyword">from</span> <span class="keyword">table</span> a,(<span class="keyword">select</span> <span class="keyword">max</span>(adddate) adddate <span class="keyword">from</span> <span class="keyword">table</span> <span class="keyword">where</span> table.title=a.title) b</span><br></pre></td></tr></table></figure><ol start="6"><li>说明：外连接查询(表名1：a 表名2：b)</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> a.a, a.b, a.c, b.c, b.d, b.f <span class="keyword">from</span> a <span class="keyword">LEFT</span> <span class="keyword">OUT</span> <span class="keyword">JOIN</span> b <span class="keyword">ON</span> a.a = b.c</span><br></pre></td></tr></table></figure><ol start="7"><li>说明：在线视图查询(表名1：a )</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> (<span class="keyword">SELECT</span> a,b,c <span class="keyword">FROM</span> a) T <span class="keyword">where</span> t.a &gt; <span class="number">1</span>;</span><br></pre></td></tr></table></figure><ol start="8"><li>说明：<strong><em>between</em></strong> 的用法,<strong><em>between</em></strong> 限制查询数据范围时包括了边界值,<strong><em>not between</em></strong> 不包括</li></ol><figure class="highlight sql"><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">select</span> * <span class="keyword">from</span> table1 <span class="keyword">where</span> <span class="keyword">time</span> <span class="keyword">between</span> time1 <span class="keyword">and</span> time2</span><br><span class="line"><span class="keyword">select</span> a,b,c, <span class="keyword">from</span> table1 <span class="keyword">where</span> a <span class="keyword">not</span> <span class="keyword">between</span> 数值<span class="number">1</span> <span class="keyword">and</span> 数值<span class="number">2</span></span><br></pre></td></tr></table></figure><ol start="9"><li>说明：<strong><em>in</em></strong> 的使用方法</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> table1 <span class="keyword">where</span> a [<span class="keyword">not</span>] <span class="keyword">in</span> (‘值<span class="number">1</span>’,’值<span class="number">2</span>’,’值<span class="number">4</span>’,’值<span class="number">6</span>’)</span><br></pre></td></tr></table></figure><ol start="10"><li>说明：两张关联表，删除主表中已经在副表中没有的信息</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">delete</span> <span class="keyword">from</span> table1 <span class="keyword">where</span> <span class="keyword">not</span> <span class="keyword">exists</span> ( <span class="keyword">select</span> * <span class="keyword">from</span> table2 <span class="keyword">where</span> table1.field1=table2.field1 )</span><br></pre></td></tr></table></figure><ol start="11"><li>说明：四表联查问题：</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> a <span class="keyword">left</span> <span class="keyword">inner</span> <span class="keyword">join</span> b <span class="keyword">on</span> a.a=b.b <span class="keyword">right</span> <span class="keyword">inner</span> <span class="keyword">join</span> c <span class="keyword">on</span> a.a=c.c <span class="keyword">inner</span> <span class="keyword">join</span> d <span class="keyword">on</span> a.a=d.d <span class="keyword">where</span> .....</span><br></pre></td></tr></table></figure><ol start="12"><li><p>说明：日程安排提前五分钟提醒<br>SQL:</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> 日程安排 <span class="keyword">where</span> <span class="keyword">datediff</span>(<span class="string">'minute'</span>,f开始时间,<span class="keyword">getdate</span>())&gt;<span class="number">5</span></span><br></pre></td></tr></table></figure></li><li><p>说明：一条sql 语句搞定数据库分页</p></li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> top <span class="number">10</span> b.* <span class="keyword">from</span> (<span class="keyword">select</span> top <span class="number">20</span> 主键字段,排序字段 <span class="keyword">from</span> 表名 <span class="keyword">order</span> <span class="keyword">by</span> 排序字段 <span class="keyword">desc</span>) a,表名 b <span class="keyword">where</span> b.主键字段 = a.主键字段 <span class="keyword">order</span> <span class="keyword">by</span> a.排序字段</span><br></pre></td></tr></table></figure><p>具体实现：<br>关于数据库分页：</p><figure class="highlight sql"><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">declare</span> @<span class="keyword">start</span> <span class="built_in">int</span>,@<span class="keyword">end</span> <span class="built_in">int</span></span><br><span class="line"></span><br><span class="line">@<span class="keyword">sql</span>  <span class="keyword">nvarchar</span>(<span class="number">600</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">set</span> @<span class="keyword">sql</span>=’<span class="keyword">select</span> top’+<span class="keyword">str</span>(@<span class="keyword">end</span>-@<span class="keyword">start</span>+<span class="number">1</span>)+’+<span class="keyword">from</span> T <span class="keyword">where</span> rid <span class="keyword">not</span> <span class="keyword">in</span>(<span class="keyword">select</span> top’+<span class="keyword">str</span>(@<span class="keyword">str</span><span class="number">-1</span>)+’Rid <span class="keyword">from</span> T <span class="keyword">where</span> Rid&gt;<span class="number">-1</span>)’</span><br><span class="line"></span><br><span class="line">exec sp_executesql @<span class="keyword">sql</span></span><br></pre></td></tr></table></figure><blockquote><p>注意：在top后不能直接跟一个变量，所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列，如果top后还有具体的字段，这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的，查询的结果后实际表中的不一致（逻辑索引中的数据有可能和数据表中的不一致，而查询时如果处在索引则首先查询索引）</p></blockquote><ol start="14"><li>说明：前10条记录</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> top <span class="number">10</span> * <span class="keyword">form</span> table1 <span class="keyword">where</span> 范围</span><br></pre></td></tr></table></figure><ol start="15"><li><p>说明：选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> a,b,c <span class="keyword">from</span> tablename ta <span class="keyword">where</span> a=(<span class="keyword">select</span> <span class="keyword">max</span>(a) <span class="keyword">from</span> tablename tb <span class="keyword">where</span> tb.b=ta.b)</span><br></pre></td></tr></table></figure></li><li><p>说明：包括所有在 TableA中但不在 TableB和TableC中的行并消除所有重复行而派生出一个结果表</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">(<span class="keyword">select</span> a <span class="keyword">from</span> tableA ) <span class="keyword">except</span> (<span class="keyword">select</span> a <span class="keyword">from</span> tableB) <span class="keyword">except</span> (<span class="keyword">select</span> a <span class="keyword">from</span> tableC)</span><br></pre></td></tr></table></figure></li><li><p>说明：随机取出10条数据</p></li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> top <span class="number">10</span> * <span class="keyword">from</span> tablename <span class="keyword">order</span> <span class="keyword">by</span> newid()</span><br></pre></td></tr></table></figure><ol start="18"><li>说明：随机选择记录</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> newid()</span><br></pre></td></tr></table></figure><ol start="19"><li><p>说明：删除重复记录<br>1.</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">delete</span> <span class="keyword">from</span> tablename <span class="keyword">where</span> <span class="keyword">id</span> <span class="keyword">not</span> <span class="keyword">in</span> (<span class="keyword">select</span> <span class="keyword">max</span>(<span class="keyword">id</span>) <span class="keyword">from</span> tablename <span class="keyword">group</span> <span class="keyword">by</span> col1,col2,...)</span><br></pre></td></tr></table></figure><p>2.</p><figure class="highlight sql"><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">select</span> <span class="keyword">distinct</span> * <span class="keyword">into</span> temp <span class="keyword">from</span> tablename</span><br><span class="line">  <span class="keyword">delete</span> <span class="keyword">from</span> tablename</span><br><span class="line"> <span class="keyword">insert</span> <span class="keyword">into</span> tablename <span class="keyword">select</span> * <span class="keyword">from</span> temp</span><br></pre></td></tr></table></figure><blockquote><p>评价： 这种操作牵连大量的数据的移动，这种做法不适合大容量但数据操作</p></blockquote><ol start="3"><li>例如：在一个外部表中导入数据，由于某些原因第一次只导入了一部分，但很难判断具体位置，这样只有在下一次全部导入，这样也就产生好多重复的字段，怎样删除重复字段<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">alter</span> <span class="keyword">table</span> tablename</span><br></pre></td></tr></table></figure></li></ol><blockquote><p>添加一个自增列</p><figure class="highlight sql"><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">add  column_b int identity(1,1)</span><br><span class="line"> <span class="keyword">delete</span> <span class="keyword">from</span> tablename <span class="keyword">where</span> column_b <span class="keyword">not</span> <span class="keyword">in</span>(</span><br><span class="line"><span class="keyword">select</span> <span class="keyword">max</span>(column_b)  <span class="keyword">from</span> tablename <span class="keyword">group</span> <span class="keyword">by</span> column1,column2,...)</span><br><span class="line"><span class="keyword">alter</span> <span class="keyword">table</span> tablename <span class="keyword">drop</span> <span class="keyword">column</span> column_b</span><br></pre></td></tr></table></figure></blockquote></li><li><p>说明：列出数据库里所有的表名</p></li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> <span class="keyword">name</span> <span class="keyword">from</span> sysobjects <span class="keyword">where</span> <span class="keyword">type</span>=<span class="string">'U'</span> // U代表用户</span><br></pre></td></tr></table></figure><ol start="21"><li>说明：列出表里的所有的列名</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> <span class="keyword">name</span> <span class="keyword">from</span> syscolumns <span class="keyword">where</span> <span class="keyword">id</span>=object_id(<span class="string">'TableName'</span>)</span><br></pre></td></tr></table></figure><ol start="22"><li>说明：列示type、vender、pcs字段，以type字段排列，case可以方便地实现多重选择，类似select 中的case。</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> <span class="keyword">type</span>,<span class="keyword">sum</span>(<span class="keyword">case</span> vender <span class="keyword">when</span> <span class="string">'A'</span> <span class="keyword">then</span> pcs <span class="keyword">else</span> <span class="number">0</span> <span class="keyword">end</span>),<span class="keyword">sum</span>(<span class="keyword">case</span> vender <span class="keyword">when</span> <span class="string">'C'</span> <span class="keyword">then</span> pcs <span class="keyword">else</span> <span class="number">0</span> <span class="keyword">end</span>),<span class="keyword">sum</span>(<span class="keyword">case</span> vender <span class="keyword">when</span> <span class="string">'B'</span> <span class="keyword">then</span> pcs <span class="keyword">else</span> <span class="number">0</span> <span class="keyword">end</span>) <span class="keyword">FROM</span> tablename <span class="keyword">group</span> <span class="keyword">by</span> <span class="keyword">type</span></span><br></pre></td></tr></table></figure><p>显示结果：<br><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">type vender pcs</span><br><span class="line">电脑 A 1</span><br><span class="line">电脑 A 1</span><br><span class="line">光盘 B 2</span><br><span class="line">光盘 A 2</span><br><span class="line">手机 B 3</span><br><span class="line">手机 C 3</span><br></pre></td></tr></table></figure></p><ol start="23"><li>说明：初始化表table1</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">TRUNCATE</span> <span class="keyword">TABLE</span> table1</span><br></pre></td></tr></table></figure><ol start="24"><li>说明：选择从10到15的记录</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> top <span class="number">5</span> * <span class="keyword">from</span> (<span class="keyword">select</span> top <span class="number">15</span> * <span class="keyword">from</span> <span class="keyword">table</span> <span class="keyword">order</span> <span class="keyword">by</span> <span class="keyword">id</span> <span class="keyword">asc</span>) table_别名 <span class="keyword">order</span> <span class="keyword">by</span> <span class="keyword">id</span> <span class="keyword">desc</span></span><br></pre></td></tr></table></figure><h2 id="技巧"><a href="#技巧" class="headerlink" title="技巧"></a>技巧</h2><ol><li>1=1，1=2的使用，在SQL语句组合时用的较多</li></ol><blockquote><p>“where 1=1” 是表示选择全部    “where 1=2”全部不选，</p></blockquote><p>如：<br><figure class="highlight sql"><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">if @strWhere !=''</span><br><span class="line"><span class="keyword">begin</span></span><br><span class="line"><span class="keyword">set</span> @strSQL = <span class="string">'select count(*) as Total from ['</span> + @tblName + <span class="string">'] where '</span> + @strWhere</span><br><span class="line"><span class="keyword">end</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"><span class="keyword">begin</span></span><br><span class="line"><span class="keyword">set</span> @strSQL = <span class="string">'select count(*) as Total from ['</span> + @tblName + <span class="string">']'</span></span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure></p><p>我们可以直接写成</p><p>错误！未找到目录项。</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">set</span> @strSQL = <span class="string">'select count(*) as Total from ['</span> + @tblName + <span class="string">'] where 1=1 安定 '</span>+ @strWhere <span class="number">2</span>、收缩数据库</span><br></pre></td></tr></table></figure><ul><li><p>重建索引</p><p><strong><em>DBCC REINDEX<br>DBCC INDEXDEFRAG</em></strong></p></li><li><p>收缩数据和日志</p></li></ul><p><strong><em>DBCC SHRINKDB<br>DBCC SHRINKFILE</em></strong></p><ol start="3"><li>压缩数据库</li></ol><p><strong><em>dbcc shrinkdatabase(dbname)</em></strong></p><ol start="4"><li>转移数据库给新用户以已存在用户权限</li></ol><p><strong><em>exec sp_change_users_login ‘update_one’,’newname’,’oldname’<br>go</em></strong></p><ol start="5"><li>检查备份集</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">RESTORE</span> VERIFYONLY <span class="keyword">from</span> disk=<span class="string">'E:\dvbbs.bak'</span></span><br></pre></td></tr></table></figure><ol start="6"><li>修复数据库</li></ol><figure class="highlight sql"><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="keyword">ALTER</span> <span class="keyword">DATABASE</span> [dvbbs] <span class="keyword">SET</span> SINGLE_USER</span><br><span class="line"><span class="keyword">GO</span></span><br><span class="line">DBCC CHECKDB(<span class="string">'dvbbs'</span>,repair_allow_data_loss) <span class="keyword">WITH</span> TABLOCK</span><br><span class="line"><span class="keyword">GO</span></span><br><span class="line"><span class="keyword">ALTER</span> <span class="keyword">DATABASE</span> [dvbbs] <span class="keyword">SET</span> MULTI_USER</span><br><span class="line"><span class="keyword">GO</span></span><br></pre></td></tr></table></figure><ol start="7"><li>日志清除</li></ol><figure class="highlight sql"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">SET</span> NOCOUNT <span class="keyword">ON</span></span><br><span class="line"><span class="keyword">DECLARE</span> @LogicalFileName sysname,</span><br><span class="line"> @MaxMinutes <span class="built_in">INT</span>,</span><br><span class="line"> @NewSize <span class="built_in">INT</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">USE</span> tablename <span class="comment">-- 要操作的数据库名</span></span><br><span class="line"><span class="keyword">SELECT</span>  @LogicalFileName = <span class="string">'tablename_log'</span>, <span class="comment">-- 日志文件名</span></span><br><span class="line">@MaxMinutes = <span class="number">10</span>, <span class="comment">-- Limit on time allowed to wrap log.</span></span><br><span class="line"> @NewSize = <span class="number">1</span>  <span class="comment">-- 你想设定的日志文件的大小(M)</span></span><br><span class="line"></span><br><span class="line">Setup / initialize</span><br><span class="line"><span class="keyword">DECLARE</span> @OriginalSize <span class="built_in">int</span></span><br><span class="line"><span class="keyword">SELECT</span> @OriginalSize = <span class="keyword">size</span></span><br><span class="line"> <span class="keyword">FROM</span> sysfiles</span><br><span class="line"> <span class="keyword">WHERE</span> <span class="keyword">name</span> = @LogicalFileName</span><br><span class="line"><span class="keyword">SELECT</span> <span class="string">'Original Size of '</span> + db_name() + <span class="string">' LOG is '</span> +</span><br><span class="line"> <span class="keyword">CONVERT</span>(<span class="built_in">VARCHAR</span>(<span class="number">30</span>),@OriginalSize) + <span class="string">' 8K pages or '</span> +</span><br><span class="line"> <span class="keyword">CONVERT</span>(<span class="built_in">VARCHAR</span>(<span class="number">30</span>),(@OriginalSize*<span class="number">8</span>/<span class="number">1024</span>)) + <span class="string">'MB'</span></span><br><span class="line"> <span class="keyword">FROM</span> sysfiles</span><br><span class="line"> <span class="keyword">WHERE</span> <span class="keyword">name</span> = @LogicalFileName</span><br><span class="line"><span class="keyword">CREATE</span> <span class="keyword">TABLE</span> DummyTrans</span><br><span class="line"> (DummyColumn <span class="built_in">char</span> (<span class="number">8000</span>) <span class="keyword">not</span> <span class="literal">null</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">DECLARE</span> @Counter    <span class="built_in">INT</span>,</span><br><span class="line"> @StartTime DATETIME,</span><br><span class="line"> @TruncLog   <span class="built_in">VARCHAR</span>(<span class="number">255</span>)</span><br><span class="line"><span class="keyword">SELECT</span> @StartTime = <span class="keyword">GETDATE</span>(),</span><br><span class="line"> @TruncLog = <span class="string">'BACKUP LOG '</span> + db_name() + <span class="string">' WITH TRUNCATE_ONLY'</span></span><br><span class="line"></span><br><span class="line">DBCC SHRINKFILE (@LogicalFileName, @NewSize)</span><br><span class="line">EXEC (@TruncLog)</span><br><span class="line"><span class="comment">-- Wrap the log if necessary.</span></span><br><span class="line"><span class="keyword">WHILE</span> @MaxMinutes &gt; <span class="keyword">DATEDIFF</span> (mi, @StartTime, <span class="keyword">GETDATE</span>()) <span class="comment">-- time has not expired</span></span><br><span class="line"> <span class="keyword">AND</span> @OriginalSize = (<span class="keyword">SELECT</span> <span class="keyword">size</span> <span class="keyword">FROM</span> sysfiles <span class="keyword">WHERE</span> <span class="keyword">name</span> = @LogicalFileName)  </span><br><span class="line"> <span class="keyword">AND</span> (@OriginalSize * <span class="number">8</span> /<span class="number">1024</span>) &gt; @NewSize  </span><br><span class="line"> <span class="keyword">BEGIN</span> <span class="comment">-- Outer loop.</span></span><br><span class="line"><span class="keyword">SELECT</span> @Counter = <span class="number">0</span></span><br><span class="line"> <span class="keyword">WHILE</span>   ((@Counter &lt; @OriginalSize / <span class="number">16</span>) <span class="keyword">AND</span> (@Counter &lt; <span class="number">50000</span>))</span><br><span class="line"> <span class="keyword">BEGIN</span> <span class="comment">-- update</span></span><br><span class="line"> <span class="keyword">INSERT</span> DummyTrans <span class="keyword">VALUES</span> (<span class="string">'Fill Log'</span>) <span class="keyword">DELETE</span> DummyTrans</span><br><span class="line"> <span class="keyword">SELECT</span> @Counter = @Counter + <span class="number">1</span></span><br><span class="line"> <span class="keyword">END</span></span><br><span class="line"> EXEC (@TruncLog)  </span><br><span class="line"> <span class="keyword">END</span></span><br><span class="line"><span class="keyword">SELECT</span> <span class="string">'Final Size of '</span> + db_name() + <span class="string">' LOG is '</span> +</span><br><span class="line"> <span class="keyword">CONVERT</span>(<span class="built_in">VARCHAR</span>(<span class="number">30</span>),<span class="keyword">size</span>) + <span class="string">' 8K pages or '</span> +</span><br><span class="line"> <span class="keyword">CONVERT</span>(<span class="built_in">VARCHAR</span>(<span class="number">30</span>),(<span class="keyword">size</span>*<span class="number">8</span>/<span class="number">1024</span>)) + <span class="string">'MB'</span></span><br><span class="line"> <span class="keyword">FROM</span> sysfiles</span><br><span class="line"> <span class="keyword">WHERE</span> <span class="keyword">name</span> = @LogicalFileName</span><br><span class="line"><span class="keyword">DROP</span> <span class="keyword">TABLE</span> DummyTrans</span><br><span class="line"><span class="keyword">SET</span> NOCOUNT <span class="keyword">OFF</span></span><br></pre></td></tr></table></figure><ol start="8"><li>说明：更改某个表</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">exec sp_changeobjectowner 'tablename','dbo'</span><br></pre></td></tr></table></figure><ol start="9"><li>存储更改全部表</li></ol><figure class="highlight sql"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">CREATE</span> <span class="keyword">PROCEDURE</span> dbo.User_ChangeObjectOwnerBatch</span><br><span class="line">@OldOwner <span class="keyword">as</span> <span class="keyword">NVARCHAR</span>(<span class="number">128</span>),</span><br><span class="line">@NewOwner <span class="keyword">as</span> <span class="keyword">NVARCHAR</span>(<span class="number">128</span>)</span><br><span class="line"><span class="keyword">AS</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">DECLARE</span> @<span class="keyword">Name</span>    <span class="keyword">as</span> <span class="keyword">NVARCHAR</span>(<span class="number">128</span>)</span><br><span class="line"><span class="keyword">DECLARE</span> @Owner   <span class="keyword">as</span> <span class="keyword">NVARCHAR</span>(<span class="number">128</span>)</span><br><span class="line"><span class="keyword">DECLARE</span> @OwnerName   <span class="keyword">as</span> <span class="keyword">NVARCHAR</span>(<span class="number">128</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">DECLARE</span> curObject <span class="keyword">CURSOR</span> <span class="keyword">FOR</span></span><br><span class="line"><span class="keyword">select</span> <span class="string">'Name'</span>    = <span class="keyword">name</span>,</span><br><span class="line">   <span class="string">'Owner'</span>    = user_name(uid)</span><br><span class="line"><span class="keyword">from</span> sysobjects</span><br><span class="line"><span class="keyword">where</span> user_name(uid)=@OldOwner</span><br><span class="line"><span class="keyword">order</span> <span class="keyword">by</span> <span class="keyword">name</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">OPEN</span>   curObject</span><br><span class="line"><span class="keyword">FETCH</span> <span class="keyword">NEXT</span> <span class="keyword">FROM</span> curObject <span class="keyword">INTO</span> @<span class="keyword">Name</span>, @Owner</span><br><span class="line"><span class="keyword">WHILE</span>(@@FETCH_STATUS=<span class="number">0</span>)</span><br><span class="line"><span class="keyword">BEGIN</span>     </span><br><span class="line"><span class="keyword">if</span> @Owner=@OldOwner</span><br><span class="line"><span class="keyword">begin</span></span><br><span class="line">   <span class="keyword">set</span> @OwnerName = @OldOwner + <span class="string">'.'</span> + <span class="keyword">rtrim</span>(@<span class="keyword">Name</span>)</span><br><span class="line">   exec sp_changeobjectowner @OwnerName, @NewOwner</span><br><span class="line"><span class="keyword">end</span></span><br><span class="line"><span class="comment">-- select @name,@NewOwner,@OldOwner</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">FETCH</span> <span class="keyword">NEXT</span> <span class="keyword">FROM</span> curObject <span class="keyword">INTO</span> @<span class="keyword">Name</span>, @Owner</span><br><span class="line"><span class="keyword">END</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">close</span> curObject</span><br><span class="line"><span class="keyword">deallocate</span> curObject</span><br><span class="line"><span class="keyword">GO</span></span><br></pre></td></tr></table></figure><ol start="10"><li>SQL SERVER中直接循环写入数据</li></ol><figure class="highlight sql"><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">declare</span> @i <span class="built_in">int</span></span><br><span class="line"><span class="keyword">set</span> @i=<span class="number">1</span></span><br><span class="line"><span class="keyword">while</span> @i&lt;<span class="number">30</span></span><br><span class="line"><span class="keyword">begin</span></span><br><span class="line">    <span class="keyword">insert</span> <span class="keyword">into</span> <span class="keyword">test</span> (userid) <span class="keyword">values</span>(@i)</span><br><span class="line">    <span class="keyword">set</span> @i=@i+<span class="number">1</span></span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><p>案例：<br>有如下表，要求就裱中所有沒有及格的成績，在每次增長0.1的基礎上，使他們剛好及格:</p><figure class="highlight sql"><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></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">    Name     score</span><br><span class="line"></span><br><span class="line">    Zhangshan   80</span><br><span class="line"></span><br><span class="line">    Lishi       59</span><br><span class="line"></span><br><span class="line">    Wangwu      50</span><br><span class="line"></span><br><span class="line">    Songquan    69</span><br><span class="line"></span><br><span class="line">while((<span class="keyword">select</span> <span class="keyword">min</span>(score) <span class="keyword">from</span> tb_table)&lt;<span class="number">60</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">begin</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">update</span> tb_table <span class="keyword">set</span> score =score*<span class="number">1.01</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">where</span> score&lt;<span class="number">60</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span>  (<span class="keyword">select</span> <span class="keyword">min</span>(score) <span class="keyword">from</span> tb_table)&gt;<span class="number">60</span></span><br><span class="line"></span><br><span class="line">  break</span><br><span class="line"></span><br><span class="line"> <span class="keyword">else</span></span><br><span class="line"></span><br><span class="line">    continue</span><br><span class="line"></span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><h2 id="数据开发-经典"><a href="#数据开发-经典" class="headerlink" title="数据开发-经典"></a>数据开发-经典</h2><ol><li>按姓氏笔画排序:</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">Select</span> * <span class="keyword">From</span> TableName <span class="keyword">Order</span> <span class="keyword">By</span> CustomerName <span class="keyword">Collate</span> Chinese_PRC_Stroke_ci_as //从少到多</span><br></pre></td></tr></table></figure><ol start="2"><li>数据库加密:</li></ol><figure class="highlight sql"><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">select</span> <span class="keyword">encrypt</span>(<span class="string">'原始密码'</span>)</span><br><span class="line"><span class="keyword">select</span> pwdencrypt(<span class="string">'原始密码'</span>)</span><br><span class="line"><span class="keyword">select</span> pwdcompare(<span class="string">'原始密码'</span>,<span class="string">'加密后密码'</span>) = <span class="number">1</span><span class="comment">--相同；否则不相同 encrypt('原始密码')</span></span><br><span class="line"><span class="keyword">select</span> pwdencrypt(<span class="string">'原始密码'</span>)</span><br><span class="line"><span class="keyword">select</span> pwdcompare(<span class="string">'原始密码'</span>,<span class="string">'加密后密码'</span>) = <span class="number">1</span><span class="comment">--相同；否则不相同</span></span><br></pre></td></tr></table></figure><ol start="3"><li>取回表中字段:</li></ol><figure class="highlight sql"><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">declare</span> @<span class="keyword">list</span> <span class="built_in">varchar</span>(<span class="number">1000</span>),</span><br><span class="line">@<span class="keyword">sql</span> <span class="keyword">nvarchar</span>(<span class="number">1000</span>)</span><br><span class="line"><span class="keyword">select</span> @<span class="keyword">list</span>=@<span class="keyword">list</span>+<span class="string">','</span>+b.name <span class="keyword">from</span> sysobjects a,syscolumns b <span class="keyword">where</span> a.id=b.id <span class="keyword">and</span> a.name=<span class="string">'表A'</span></span><br><span class="line"><span class="keyword">set</span> @<span class="keyword">sql</span>=<span class="string">'select '</span>+<span class="keyword">right</span>(@<span class="keyword">list</span>,<span class="keyword">len</span>(@<span class="keyword">list</span>)<span class="number">-1</span>)+<span class="string">' from 表A'</span></span><br><span class="line">exec (@<span class="keyword">sql</span>)</span><br></pre></td></tr></table></figure><p>4.查看硬盘分区:</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">EXEC master..xp_fixeddrives</span><br></pre></td></tr></table></figure><ol start="5"><li>比较A,B表是否相等:</li></ol><figure class="highlight sql"><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">if (<span class="keyword">select</span> <span class="keyword">checksum_agg</span>(binary_checksum(*)) <span class="keyword">from</span> A)</span><br><span class="line">     =</span><br><span class="line">    (<span class="keyword">select</span> <span class="keyword">checksum_agg</span>(binary_checksum(*)) <span class="keyword">from</span> B)</span><br><span class="line">print <span class="string">'相等'</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">print <span class="string">'不相等'</span></span><br></pre></td></tr></table></figure><ol start="6"><li>杀掉所有的事件探察器进程:</li></ol><figure class="highlight sql"><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">DECLARE</span> hcforeach <span class="keyword">CURSOR</span> <span class="keyword">GLOBAL</span> <span class="keyword">FOR</span> <span class="keyword">SELECT</span> <span class="string">'kill '</span>+<span class="keyword">RTRIM</span>(spid) <span class="keyword">FROM</span> master.dbo.sysprocesses</span><br><span class="line"><span class="keyword">WHERE</span> program_name <span class="keyword">IN</span>(<span class="string">'SQL profiler'</span>,N<span class="string">'SQL 事件探查器'</span>)</span><br><span class="line">EXEC sp_msforeach_worker <span class="string">'?'</span></span><br></pre></td></tr></table></figure><ol start="7"><li>记录搜索:<blockquote><p>开头到N条记录</p></blockquote></li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">Select</span> Top N * <span class="keyword">From</span> 表</span><br></pre></td></tr></table></figure><hr><blockquote><p>N到M条记录(要有主索引ID)</p></blockquote><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">Select</span> Top M-N * <span class="keyword">From</span> 表 <span class="keyword">Where</span> <span class="keyword">ID</span> <span class="keyword">in</span> (<span class="keyword">Select</span> Top M <span class="keyword">ID</span> <span class="keyword">From</span> 表) <span class="keyword">Order</span> <span class="keyword">by</span> <span class="keyword">ID</span>   <span class="keyword">Desc</span></span><br></pre></td></tr></table></figure><hr><blockquote><p>N到结尾记录</p></blockquote><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">Select</span> Top N * <span class="keyword">From</span> 表 <span class="keyword">Order</span> <span class="keyword">by</span> <span class="keyword">ID</span> <span class="keyword">Desc</span></span><br></pre></td></tr></table></figure><p>案例<br>例如1：一张表有一万多条记录，表的第一个字段 RecID 是自增长字段， 写一个SQL语句， 找出表的第31到第40个记录。</p> <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> top <span class="number">10</span> recid <span class="keyword">from</span> A <span class="keyword">where</span> recid <span class="keyword">not</span>  <span class="keyword">in</span>(<span class="keyword">select</span> top <span class="number">30</span> recid <span class="keyword">from</span> A)</span><br></pre></td></tr></table></figure><blockquote><p>分析：如果这样写会产生某些问题，如果recid在表中存在逻辑索引。<br>select top 10 recid from A where……是从索引中查找，而后面的select top 30 recid from A则在数据表中查找，这样由于索引中的顺序有可能和数据表中的不一致，这样就导致查询到的不是本来的欲得到的数据。</p></blockquote><p>解决方案</p><ol><li><p>用order by select top 30 recid from A order by ricid 如果该字段不是自增长，就会出现问题</p></li><li><p>在那个子查询中也加条件：select top 30 recid from A where recid&gt;-1</p></li></ol><p>例2：查询表中的最后以条记录，并不知道这个表共有多少数据,以及表结构。</p><figure class="highlight sql"><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">set</span> @s = <span class="string">'select top 1 * from T   where pid not in (select top '</span> + <span class="keyword">str</span>(@<span class="keyword">count</span><span class="number">-1</span>) + <span class="string">' pid  from  T)'</span></span><br><span class="line"></span><br><span class="line">print @s      exec  sp_executesql  @s</span><br></pre></td></tr></table></figure><ol start="9"><li><p>获取当前数据库中的所有用户表</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> <span class="keyword">Name</span> <span class="keyword">from</span> sysobjects <span class="keyword">where</span> xtype=<span class="string">'u'</span> <span class="keyword">and</span> <span class="keyword">status</span>&gt;=<span class="number">0</span></span><br></pre></td></tr></table></figure></li><li><p>获取某一个表的所有字段</p><figure class="highlight sql"><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">select</span> <span class="keyword">name</span> <span class="keyword">from</span> syscolumns <span class="keyword">where</span> <span class="keyword">id</span>=object_id(<span class="string">'表名'</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">select</span> <span class="keyword">name</span> <span class="keyword">from</span> syscolumns <span class="keyword">where</span> <span class="keyword">id</span> <span class="keyword">in</span> (<span class="keyword">select</span> <span class="keyword">id</span> <span class="keyword">from</span> sysobjects <span class="keyword">where</span> <span class="keyword">type</span> = <span class="string">'u'</span> <span class="keyword">and</span> <span class="keyword">name</span> = <span class="string">'表名'</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">两种方式的效果相同</span><br></pre></td></tr></table></figure></li><li><p>查看与某一个表相关的视图、存储过程、函数</p></li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> a.* <span class="keyword">from</span> sysobjects a, syscomments b <span class="keyword">where</span> a.id = b.id <span class="keyword">and</span> b.text <span class="keyword">like</span> <span class="string">'%表名%'</span></span><br></pre></td></tr></table></figure><ol start="12"><li>查看当前数据库中所有存储过程</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> <span class="keyword">name</span> <span class="keyword">as</span> 存储过程名称 <span class="keyword">from</span> sysobjects <span class="keyword">where</span> xtype=<span class="string">'P'</span></span><br></pre></td></tr></table></figure><ol start="13"><li>查询用户创建的所有数据库</li></ol><figure class="highlight sql"><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">select</span> * <span class="keyword">from</span> master..sysdatabases D <span class="keyword">where</span> <span class="keyword">sid</span> <span class="keyword">not</span> <span class="keyword">in</span>(<span class="keyword">select</span> <span class="keyword">sid</span> <span class="keyword">from</span> master..syslogins <span class="keyword">where</span> <span class="keyword">name</span>=<span class="string">'sa'</span>)</span><br><span class="line">或者</span><br><span class="line"><span class="keyword">select</span> dbid, <span class="keyword">name</span> <span class="keyword">AS</span> DB_NAME <span class="keyword">from</span> master..sysdatabases <span class="keyword">where</span> <span class="keyword">sid</span> &lt;&gt; <span class="number">0x01</span></span><br></pre></td></tr></table></figure><ol start="14"><li>查询某一个表的字段和数据类型</li></ol><figure class="highlight sql"><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">select</span> column_name,data_type <span class="keyword">from</span> information_schema.columns</span><br><span class="line"><span class="keyword">where</span> table_name = <span class="string">'表名'</span></span><br></pre></td></tr></table></figure><ol start="15"><li><p>不同服务器数据库之间的数据操作</p><ol><li>创建链接服务器</li></ol><figure class="highlight sql"><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">exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '</span><br><span class="line"></span><br><span class="line">exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 '</span><br></pre></td></tr></table></figure><ol start="2"><li>查询示例</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> ITSV.数据库名.dbo.表名</span><br></pre></td></tr></table></figure><ol start="3"><li>导入示例</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span> * <span class="keyword">into</span> 表 <span class="keyword">from</span> ITSV.数据库名.dbo.表名</span><br></pre></td></tr></table></figure><ol start="4"><li>以后不再使用时删除链接服务器</li></ol><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">exec sp_dropserver  'ITSV ', 'droplogins '</span><br></pre></td></tr></table></figure><ol start="5"><li><p>连接远程/局域网数据(openrowset/openquery/opendatasource)</p><ol><li>openrowset</li></ol><ul><li><p>查询示例</p><blockquote><p>select * from openrowset( ‘SQLOLEDB ‘, ‘sql服务器名 ‘; ‘用户名 ‘; ‘密码 ‘,数据库名.dbo.表名)</p></blockquote></li><li><p>生成本地表</p><blockquote><p>select * into 表 from openrowset( ‘SQLOLEDB ‘, ‘sql服务器名 ‘; ‘用户名 ‘; ‘密码 ‘,数据库名.dbo.表名)</p></blockquote></li></ul></li></ol></li></ol><pre><code>  2. 把本地表导入远程表  <figure class="highlight sql"><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">insert</span> openrowset( <span class="string">'SQLOLEDB '</span>, <span class="string">'sql服务器名 '</span>; '用户名 '; '密码 ',数据库名.dbo.表名)</span><br><span class="line"></span><br><span class="line"><span class="keyword">select</span> *<span class="keyword">from</span> 本地表</span><br></pre></td></tr></table></figure>  3. 更新本地表  <figure class="highlight sql"><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">update</span> b</span><br><span class="line"></span><br><span class="line"><span class="keyword">set</span> b.列A=a.列A</span><br><span class="line"></span><br><span class="line"> <span class="keyword">from</span> openrowset( <span class="string">'SQLOLEDB '</span>, <span class="string">'sql服务器名 '</span>; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b</span><br><span class="line"></span><br><span class="line">on a.column1=b.column1</span><br></pre></td></tr></table></figure>  4. openquery用法需要创建一个连接      &gt;首先创建一个连接创建链接服务器      exec sp_addlinkedserver   &apos;ITSV &apos;, &apos; &apos;, &apos;SQLOLEDB &apos;, &apos;远程服务器名或ip地址 &apos;  5. 查询  <figure class="highlight sql"><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">select</span> *</span><br><span class="line"></span><br><span class="line"><span class="keyword">FROM</span> openquery(ITSV,  <span class="string">'SELECT *  FROM 数据库.dbo.表名 '</span>)</span><br></pre></td></tr></table></figure>  6. 把本地表导入远程表  <figure class="highlight sql"><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">insert</span> openquery(ITSV,  <span class="string">'SELECT *  FROM 数据库.dbo.表名 '</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> 本地表</span><br></pre></td></tr></table></figure>  7. 更新本地表  <figure class="highlight sql"><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">update</span> b</span><br><span class="line"></span><br><span class="line"><span class="keyword">set</span> b.列B=a.列B</span><br><span class="line"></span><br><span class="line"><span class="keyword">FROM</span> openquery(ITSV,  <span class="string">'SELECT * FROM 数据库.dbo.表名 '</span>) <span class="keyword">as</span> a</span><br><span class="line"></span><br><span class="line"><span class="keyword">inner</span> <span class="keyword">join</span> 本地表 b <span class="keyword">on</span> a.列A=b.列A</span><br></pre></td></tr></table></figure>  8. opendatasource/openrowset  <figure class="highlight sql"><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">SELECT</span>   *</span><br><span class="line"></span><br><span class="line"><span class="keyword">FROM</span>   opendatasource( <span class="string">'SQLOLEDB '</span>,  <span class="string">'Data Source=ip/ServerName;User ID=登陆名;Password=密码 '</span> ).test.dbo.roy_ta</span><br></pre></td></tr></table></figure>9. 把本地表导入远程表<figure class="highlight sql"><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">insert</span> opendatasource( <span class="string">'SQLOLEDB '</span>,  <span class="string">'Data Source=ip/ServerName;User ID=登陆名;Password=密码 '</span>).数据库.dbo.表名</span><br><span class="line"></span><br><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> 本地表</span><br><span class="line"></span><br><span class="line"><span class="keyword">SQL</span> <span class="keyword">Server</span>基本函数</span><br><span class="line"></span><br><span class="line"><span class="keyword">SQL</span> <span class="keyword">Server</span>基本函数</span><br></pre></td></tr></table></figure></code></pre><ol start="16"><li><p>字符串函数 长度与分析用</p><ol><li><p>datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格</p></li><li><p>substring(expression,start,length) 取子串，字符串的下标是从“1”，start为起始位置，length为字符串长度，实际应用中以len(expression)取得其长度</p></li><li><p>right(char_expr,int_expr) 返回字符串右边第int_expr个字符，还用left于之相反</p></li><li><p>isnull( check_expression , replacement_value )如果check_expression為空，則返回replacement_value的值，不為空，就返回check_expression字符操作类</p></li><li><p>Sp_addtype自定義數據類型<br>例如. EXEC sp_addtype birthday, datetime, ‘NULL’</p></li><li><p>set nocount {on|off}<br>使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据，则该设置由于大量减少了网络流量，因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置，而不是在分析时设置。SET NOCOUNT 为 ON 时，不返回计数（表示受 Transact-SQL 语句影响的行数）。</p></li></ol></li></ol><ol start="17"><li>SET NOCOUNT<br>为 OFF 时，返回计数</li></ol><p>常识</p><blockquote><p>在SQL查询中：from后最多可以跟多少张表或视图：256在SQL语句中出现 Order by,查询时，先排序，后取在SQL中，一个字段的最大容量是8000，而对于nvarchar(4000),由于nvarchar是Unicode码。</p></blockquote><ol start="18"><li>SQLServer2000<br>同步复制技术实现步骤</li></ol><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><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></pre></td><td class="code"><pre><span class="line">一、 预备工作</span><br><span class="line">1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户--管理工具--计算机管理--用户和组--右键用户--新建用户--建立一个隶属于administrator组的登陆windows的用户（SynUser）2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:</span><br><span class="line"></span><br><span class="line">我的电脑--D:\ 新建一个目录,名为: PUB</span><br><span class="line">--右键这个新建的目录--属性--共享--选择&quot;共享该文件夹&quot;--通过&quot;权限&quot;按纽来设置具体的用户权限,保证第一步中创建的用户(SynUser) 具有对该文件夹的所有权限</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">--确定3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)</span><br><span class="line"></span><br><span class="line">开始--程序--管理工具--服务</span><br><span class="line">--右键SQLSERVERAGENT--属性--登陆--选择&quot;此账户&quot;--输入或者选择第一步中创建的windows登录用户名（SynUser）--&quot;密码&quot;中输入该用户的密码4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)</span><br><span class="line"></span><br><span class="line">企业管理器</span><br><span class="line">--右键SQL实例--属性--安全性--身份验证--选择&quot;SQL Server 和 Windows&quot;--确定5.在发布服务器和订阅服务器上互相注册</span><br><span class="line"></span><br><span class="line">企业管理器</span><br><span class="line">--右键SQL Server组--新建SQL Server注册...--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加--下一步--连接使用,选择第二个&quot;SQL Server身份验证&quot;--下一步--输入用户名和密码（SynUser）--下一步--选择SQL Server组,也可以创建一个新组--下一步--完成6.对于只能用IP,不能用计算机名的,为其注册服务器别名（此步在实施中没用到） (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)</span><br><span class="line"></span><br><span class="line">开始--程序--Microsoft SQL Server--客户端网络实用工具</span><br><span class="line">--别名--添加--网络库选择&quot;tcp/ip&quot;--服务器别名输入SQL服务器名--连接参数--服务器名称中输入SQL服务器ip地址--如果你修改了SQL的端口,取消选择&quot;动态决定端口&quot;,并输入对应的端口号</span><br><span class="line"></span><br><span class="line">二、 正式配置</span><br><span class="line">1、配置发布服务器</span><br><span class="line"></span><br><span class="line">打开企业管理器，在发布服务器（B、C、D）上执行以下步骤:</span><br><span class="line">(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导(2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器（选择自己）(3) [下一步] 设置快照文件夹</span><br><span class="line"></span><br><span class="line">采用默认\\servername\Pub</span><br><span class="line">(4) [下一步] 自定义配置</span><br><span class="line"></span><br><span class="line">可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置</span><br><span class="line">否,使用下列默认设置（推荐）</span><br><span class="line">(5) [下一步] 设置分发数据库名称和位置 采用默认值(6) [下一步] 启用发布服务器 选择作为发布的服务器(7) [下一步] 选择需要发布的数据库和发布类型(8) [下一步] 选择注册订阅服务器(9) [下一步] 完成配置2、创建出版物</span><br><span class="line"></span><br><span class="line">发布服务器B、C、D上</span><br><span class="line">(1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令(2)选择要创建出版物的数据库，然后单击[创建发布](3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 orACLE或ACCESS之间进行数据复制。</span><br><span class="line"></span><br><span class="line">但是在这里我们选择运行&quot;SQL SERVER 2000&quot;的数据库服务器</span><br><span class="line">(5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表</span><br><span class="line"></span><br><span class="line">注意: 如果前面选择了事务发布 则再这一步中只能选择带有主键的表</span><br><span class="line">(6)选择发布名称和描述(7)自定义发布属性 向导提供的选择:</span><br><span class="line"></span><br><span class="line">是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性</span><br><span class="line">否 根据指定方式创建发布 （建议采用自定义的方式）</span><br><span class="line">(8)[下一步] 选择筛选发布的方式(9)[下一步] 可以选择是否允许匿名订阅1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器</span><br><span class="line"></span><br><span class="line">方法: [工具]-&gt;[复制]-&gt;[配置发布、订阅服务器和分发的属性]-&gt;[订阅服务器] 中添加</span><br><span class="line">否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅</span><br><span class="line">如果仍然需要匿名订阅则用以下解决办法</span><br><span class="line">[企业管理器]-&gt;[复制]-&gt;[发布内容]-&gt;[属性]-&gt;[订阅选项] 选择允许匿名请求订阅2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示(10)[下一步] 设置快照 代理程序调度(11)[下一步] 完成配置</span><br><span class="line"></span><br><span class="line">当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库</span><br><span class="line">有数据</span><br><span class="line">srv1.库名..author有字段:id,name,phone, srv2.库名..author有字段:id,name,telphone,adress</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">要求：</span><br><span class="line">srv1.库名..author增加记录则srv1.库名..author记录增加srv1.库名..author的phone字段更新，则srv1.库名..author对应字段telphone更新</span><br><span class="line"></span><br><span class="line">--</span><br><span class="line"></span><br><span class="line">--大致的处理步骤--1.在 srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步exec sp_addlinkedserver &apos;srv2&apos;,&apos;&apos;,&apos;SQLOLEDB&apos;,&apos;srv2的sql实例名或ip&apos; exec sp_addlinkedsrvlogin &apos;srv2&apos;,&apos;false&apos;,null,&apos;用户名&apos;,&apos;密码&apos;</span><br><span class="line"></span><br><span class="line">go</span><br><span class="line">--2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动</span><br><span class="line"></span><br><span class="line">。我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动</span><br><span class="line">go</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">--然后创建一个作业定时调用上面的同步处理存储过程就行了</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">企业管理器</span><br><span class="line">--管理--SQL Server代理--右键作业--新建作业--&quot;常规&quot;项中输入作业名称--&quot;步骤&quot;项--新建--&quot;步骤名&quot;中输入步骤名--&quot;类型&quot;中选择&quot;Transact-SQL 脚本(TSQL)&quot; --&quot;数据库&quot;选择执行命令的数据库--&quot;命令&quot;中输入要执行的语句: exec p_process --确定--&quot;调度&quot;项--新建调度--&quot;名称&quot;中输入调度名称--&quot;调度类型&quot;中选择你的作业执行安排--如果选择&quot;反复出现&quot; --点&quot;更改&quot;来设置你的时间安排</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行</span><br><span class="line"></span><br><span class="line">设置方法:</span><br><span class="line">我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择&quot;自动启动&quot;--确定.</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">--3.实现同步处理的方法2,定时同步</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">--在srv1中创建如下的同步处理存储过程</span><br><span class="line"></span><br><span class="line">```sql</span><br><span class="line">create proc p_process</span><br><span class="line">as</span><br></pre></td></tr></table></figure><p>–更新修改过的数据</p><figure class="highlight sql"><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">update</span> b <span class="keyword">set</span> <span class="keyword">name</span>=i.name,telphone=i.telphone</span><br><span class="line"><span class="keyword">from</span> srv2.库名.dbo.author b,author i</span><br><span class="line"></span><br><span class="line"><span class="keyword">where</span> b.id=i.id <span class="keyword">and</span></span><br><span class="line">(b.name &lt;&gt; i.name <span class="keyword">or</span> b.telphone &lt;&gt; i.telphone)</span><br></pre></td></tr></table></figure><p>–插入新增的数据insert srv2.库名.dbo.author(id,name,telphone)</p><figure class="highlight sql"><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">select</span> <span class="keyword">id</span>,<span class="keyword">name</span>,telphone <span class="keyword">from</span> author i</span><br><span class="line"><span class="keyword">where</span> <span class="keyword">not</span> <span class="keyword">exists</span>(</span><br><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> srv2.库名.dbo.author <span class="keyword">where</span> <span class="keyword">id</span>=i.id)</span><br></pre></td></tr></table></figure><p>–删除已经删除的数据(如果需要的话)</p><figure class="highlight sql"><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="keyword">delete</span> b</span><br><span class="line"><span class="keyword">from</span> srv2.库名.dbo.author b</span><br><span class="line"></span><br><span class="line"><span class="keyword">where</span> <span class="keyword">not</span> <span class="keyword">exists</span>(</span><br><span class="line"><span class="keyword">select</span> * <span class="keyword">from</span> author <span class="keyword">where</span> <span class="keyword">id</span>=b.id)</span><br><span class="line"><span class="keyword">go</span></span><br></pre></td></tr></table></figure><p><code>`</code></p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Sql语句大全&lt;br&gt;
    
    </summary>
    
      <category term="Backend" scheme="https://lee.js.org/categories/Backend/"/>
    
    
      <category term="Sql" scheme="https://lee.js.org/tags/Sql/"/>
    
  </entry>
  
  <entry>
    <title>Python3基础</title>
    <link href="https://lee.js.org/2018/10/03/Python3%E5%9F%BA%E7%A1%80/"/>
    <id>https://lee.js.org/2018/10/03/Python3基础/</id>
    <published>2018-10-02T18:15:41.000Z</published>
    <updated>2019-03-08T04:05:08.719Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>前端萌新学习Python之旅，跟随廖雪峰大神的步伐，一天一天的进步！<br><a id="more"></a></p><h2 id="git-bash-构建python-环境"><a href="#git-bash-构建python-环境" class="headerlink" title="git bash 构建python 环境"></a>git bash 构建python 环境</h2><table><thead><tr><th style="text-align:left">python</th><th style="text-align:center">git bush开启python</th></tr></thead><tbody><tr><td style="text-align:left">winpty python</td><td style="text-align:center">-</td></tr><tr><td style="text-align:left">python -i</td><td style="text-align:center">-</td></tr><tr><td style="text-align:left">python</td><td style="text-align:center">bash.bashrc追加 alias python=’winpty python ‘</td></tr></tbody></table><h2 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h2><figure class="highlight py"><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">name = input(<span class="string">'please your name:'</span>)</span><br><span class="line">print(<span class="string">'hello'</span>,name)</span><br></pre></td></tr></table></figure><h2 id="条件语句-惯例缩进四个空格"><a href="#条件语句-惯例缩进四个空格" class="headerlink" title="条件语句(惯例缩进四个空格)"></a>条件语句(惯例缩进四个空格)</h2><figure class="highlight py"><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="comment">#缩进4个空格</span></span><br><span class="line">a = <span class="number">100</span></span><br><span class="line"><span class="keyword">if</span> a&gt;=<span class="number">0</span>:</span><br><span class="line">    print(a)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    print(-a)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment">#不缩进也可</span></span><br><span class="line">b = <span class="number">200</span></span><br><span class="line"><span class="keyword">if</span> b&gt;=<span class="number">0</span>:print(b)</span><br><span class="line"><span class="keyword">else</span>:print(-b)</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><table><thead><tr><th>类型</th><th>表现形式</th><th>注意</th></tr></thead><tbody><tr><td>整数</td><td>100</td><td></td></tr><tr><td>浮点数</td><td>3,14</td><td></td></tr><tr><td>字符串</td><td>‘abc’，”xyz”</td><td>I’m ok</td></tr></tbody></table><h3 id="字符串转义"><a href="#字符串转义" class="headerlink" title="字符串转义"></a>字符串转义</h3><p><strong><em>注意：对于字符串中含有特殊字符的这一点和正则有点像这时候我们要用到转译字符 ‘\‘或者使用双引号在外=&gt;”I’m OK”</em></strong></p><figure class="highlight py"><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="string">'I\'m \"OK\"!'</span></span><br><span class="line"><span class="comment">#I'm "OK"</span></span><br></pre></td></tr></table></figure><blockquote><p>转义字符\可以转义很多字符，比如\n表示换行，\t表示制表符，字符\本身也要转义，所以\表示的字符就是\</p></blockquote><figure class="highlight py"><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">print(<span class="string">'I\'m ok.'</span>)</span><br><span class="line"><span class="comment">#I'm ok.</span></span><br><span class="line">print(<span class="string">'I\'m learning\nPython.'</span>)</span><br><span class="line"><span class="comment">#I'm learning</span></span><br><span class="line"><span class="comment">#Python.</span></span><br><span class="line">print(<span class="string">'\\\n\\'</span>)</span><br><span class="line"><span class="comment">#\</span></span><br><span class="line"><span class="comment">#\</span></span><br></pre></td></tr></table></figure><blockquote><p>如果字符串里面有很多字符都需要转义，就需要加很多\，为了简化，Python还允许用r’’表示’’内部的字符串默认不转义</p></blockquote><figure class="highlight py"><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">print(<span class="string">r'\\有一个姑娘，\她有些任性\\'</span>)</span><br><span class="line"><span class="comment">#这里需要注意无论在哪里使用转译符号‘\’,在字符串开头可以随便用；在字符串末尾不能出现一个单独的‘\’,否则会报错</span></span><br><span class="line"></span><br><span class="line">&gt;SyntaxError: EOL <span class="keyword">while</span> scanning string literal</span><br><span class="line">print(<span class="string">r'\\有一个姑娘，\她有些任性\')</span></span><br></pre></td></tr></table></figure><blockquote><p>如果字符串内部有很多换行，用\n写在一行里不好阅读，为了简化，Python允许用’’’…’’’的格式表示多行内容</p></blockquote><figure class="highlight py"><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></pre></td><td class="code"><pre><span class="line">print(<span class="string">'''</span></span><br><span class="line"><span class="string">line1</span></span><br><span class="line"><span class="string">line2</span></span><br><span class="line"><span class="string">line3</span></span><br><span class="line"><span class="string">'''</span>)</span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment">#line1</span></span><br><span class="line"><span class="comment">#line2</span></span><br><span class="line"><span class="comment">#line3</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line">print(<span class="string">'''123 123</span></span><br><span class="line"><span class="string">123</span></span><br><span class="line"><span class="string">'''</span>)</span><br><span class="line"><span class="comment">#123 123</span></span><br><span class="line"><span class="comment">#123</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line">print(<span class="string">r'''hello,\n</span></span><br><span class="line"><span class="string">world'''</span>)</span><br><span class="line"><span class="comment">#hello,\n</span></span><br><span class="line"><span class="comment">#world</span></span><br></pre></td></tr></table></figure><h4 id="归纳"><a href="#归纳" class="headerlink" title="归纳"></a>归纳</h4><table><thead><tr><th>符号</th><th>作用</th><th>注意</th></tr></thead><tbody><tr><td>\</td><td>转义特殊字符</td><td>字符串末尾至少加2个</td></tr><tr><td>\n</td><td>表示换行</td><td>在r’’或r’’’ ‘’’内无效</td></tr><tr><td>\t</td><td>表示制表符</td><td>在r’’或r’’’ ‘’’内无效</td></tr><tr><td>r’’</td><td>不转义引号里面的内容</td><td></td></tr><tr><td>‘’’ ‘’’</td><td>多次换行</td><td>书写时多敲几次换行</td></tr></tbody></table><h2 id="变量与布尔值"><a href="#变量与布尔值" class="headerlink" title="变量与布尔值"></a>变量与布尔值</h2><blockquote><p>注意：在python环境中布尔值开头必须大写</p></blockquote><h3 id="布尔值的运算符"><a href="#布尔值的运算符" class="headerlink" title="布尔值的运算符"></a>布尔值的运算符</h3><blockquote><p>运算符有 <strong><em>and</em></strong>,<strong>or</strong>,<strong><em>not</em></strong><br><figure class="highlight py"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#and</span></span><br><span class="line">&gt;&gt;&gt;<span class="keyword">True</span> <span class="keyword">and</span> <span class="keyword">True</span></span><br><span class="line"><span class="keyword">True</span></span><br><span class="line"></span><br><span class="line">&gt;&gt;&gt;Fslse <span class="keyword">and</span> <span class="keyword">False</span></span><br><span class="line"><span class="keyword">False</span></span><br><span class="line"></span><br><span class="line">&gt;&gt;&gt;<span class="keyword">True</span> <span class="keyword">and</span> <span class="keyword">False</span></span><br><span class="line"><span class="keyword">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#or</span></span><br><span class="line">&gt;&gt;&gt;<span class="keyword">True</span> <span class="keyword">or</span> <span class="keyword">True</span></span><br><span class="line"><span class="keyword">True</span></span><br><span class="line"></span><br><span class="line">&gt;&gt;&gt;<span class="keyword">False</span> <span class="keyword">or</span> <span class="keyword">False</span></span><br><span class="line"><span class="keyword">False</span></span><br><span class="line"></span><br><span class="line">&gt;&gt;&gt;<span class="keyword">True</span> <span class="keyword">or</span> <span class="keyword">False</span></span><br><span class="line"><span class="keyword">True</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## not</span></span><br><span class="line">&gt;&gt;&gt;<span class="keyword">not</span> <span class="keyword">True</span></span><br><span class="line"><span class="keyword">False</span></span><br><span class="line"></span><br><span class="line">&gt;&gt;&gt;<span class="keyword">not</span> <span class="keyword">False</span></span><br><span class="line"><span class="keyword">True</span></span><br><span class="line"></span><br><span class="line">&gt;&gt;&gt;<span class="keyword">not</span> <span class="number">1</span>&lt;<span class="number">8</span></span><br><span class="line"><span class="keyword">True</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#条件语句</span></span><br><span class="line"><span class="keyword">if</span> a&gt;=<span class="number">100</span></span><br><span class="line">    print(<span class="string">'大于等于'</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    print(<span class="string">'小于'</span>)</span><br></pre></td></tr></table></figure></p></blockquote><h3 id="空值"><a href="#空值" class="headerlink" title="空值"></a>空值</h3><blockquote><p>空值是Python里一个特殊的值，用None表示。None不能理解为0，因为0是有意义的，而None是一个特殊的空值</p></blockquote><h3 id="变量"><a href="#变量" class="headerlink" title="变量"></a>变量</h3><blockquote><p>变量规则：变量名必须是大小写英文、数字和_的组合，且不能用数字开头，变量的声明不用像js那样加var ,let,const</p></blockquote><figure class="highlight py"><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">a = <span class="number">100</span></span><br><span class="line">b = <span class="string">'lee'</span></span><br><span class="line">c = <span class="keyword">True</span></span><br></pre></td></tr></table></figure><blockquote><p>变量是可以赋值的，且可以多次赋值，后面的覆盖前面的赋值</p></blockquote><figure class="highlight py"><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">a = <span class="number">10086</span></span><br><span class="line">a = <span class="string">'你好'</span></span><br><span class="line">print(a)</span><br></pre></td></tr></table></figure><blockquote><p>这种变量本身类型不固定的语言称之为动态语言，与之对应的是静态语言。静态语言在定义变量时必须指定变量类型，如果赋值的时候类型不匹配，就会报错。例如Java是静态语言，赋值语句如下（// 表示注释）：</p></blockquote><figure class="highlight py"><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">int a = <span class="number">123</span>; // a是整数类型变量</span><br><span class="line">a = <span class="string">"ABC"</span>; // 错误：不能把字符串赋给整型变量</span><br></pre></td></tr></table></figure><h3 id="常量"><a href="#常量" class="headerlink" title="常量"></a>常量</h3><blockquote><p>所谓常量就是不能变的变量，比如常用的数学常数π就是一个常量。在Python中，通常用全部大写的变量名表示常量</p></blockquote><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">PI = <span class="number">3.14159265359</span></span><br></pre></td></tr></table></figure><h3 id="除法"><a href="#除法" class="headerlink" title="除法"></a>除法</h3><blockquote><p>运算符 <strong><em>/</em></strong> , <strong><em>//</em></strong> , <strong><em>%</em></strong></p></blockquote><figure class="highlight py"><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">&gt;&gt;&gt;<span class="number">10</span>/<span class="number">3</span></span><br><span class="line"><span class="number">3.33333333335</span>         <span class="comment">#结果为浮点数</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">9</span>/<span class="number">3</span></span><br><span class="line"><span class="number">3.0</span>                   <span class="comment">#结果为浮点数</span></span><br><span class="line"></span><br><span class="line">&gt;&gt;&gt;<span class="number">10</span>//<span class="number">3</span></span><br><span class="line"><span class="number">3</span>                     <span class="comment">#结果向下取整</span></span><br><span class="line"></span><br><span class="line">&gt;&gt;&gt;<span class="number">10</span>%<span class="number">3</span></span><br><span class="line"><span class="number">1</span>                     <span class="comment">#结果取余</span></span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;前端萌新学习Python之旅，跟随廖雪峰大神的步伐，一天一天的进步！&lt;br&gt;
    
    </summary>
    
      <category term="Backend" scheme="https://lee.js.org/categories/Backend/"/>
    
    
      <category term="Python" scheme="https://lee.js.org/tags/Python/"/>
    
      <category term="Python3" scheme="https://lee.js.org/tags/Python3/"/>
    
      <category term="Note" scheme="https://lee.js.org/tags/Note/"/>
    
  </entry>
  
  <entry>
    <title>ECMAScript5(ES5)</title>
    <link href="https://lee.js.org/2018/09/27/ES5/"/>
    <id>https://lee.js.org/2018/09/27/ES5/</id>
    <published>2018-09-27T01:56:59.000Z</published>
    <updated>2019-03-08T04:05:23.548Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>ECMAScript (or ES) is a trademarked scripting-language specification standardized by Ecma International in ECMA-262 and ISO/IEC 16262. It was created to standardize JavaScript, so as to foster multiple independent implementations.<a id="more"></a> JavaScript has remained the best-known implementation of ECMAScript since the standard was first published, with other well-known implementations including JScript and ActionScript. ECMAScript is commonly used for client-side scripting on the World Wide Web, and it is increasingly being used for writing server applications and services using Node.js.</p><div id="music163player"><br>    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="280" height="86" src="//music.163.com/outchain/player?type=2&id=5255987&auto=0&height=66"><br>    </iframe><br></div><h2 id="Array新增方法"><a href="#Array新增方法" class="headerlink" title="Array新增方法"></a>Array新增方法</h2><h3 id="静态方法"><a href="#静态方法" class="headerlink" title="静态方法"></a>静态方法</h3><ul><li>Array.isArray()</li></ul><blockquote><p>判断是否为数组</p></blockquote><h3 id="索引方法"><a href="#索引方法" class="headerlink" title="索引方法"></a>索引方法</h3><blockquote><p>区别就是一个从前往后找，一个从后往前找</p></blockquote><ul><li><p>indexOf/lastIndexOf(keyword [,startIndex])</p><ul><li>keyword: 要查找的项，</li><li>startIndex：查找起点位置的索引，该参数可选</li></ul></li></ul><p>方法返回keyword所在数组中的索引值，如果数组不存在keyword，则返回-1</p><h3 id="迭代方法"><a href="#迭代方法" class="headerlink" title="迭代方法"></a>迭代方法</h3><ul><li><p>forEach(fn)</p><p>遍历方法，for循环没有太大差别，比for循环方便</p></li><li><p>map(fn)</p><p>返回每次函数调用的结果组成的数组</p></li><li><p>filter(fn)</p><p>得到执行fn后返回true时对应的数组元素，利用这个方法可对数组元素进行过滤筛选</p></li><li><p>every(fn)</p><p>如果该函数对每一项都返回 true，则返回true</p></li><li><p>some(fn)</p><p>如果该函数对任何一项返回 true，则返回true</p></li></ul><blockquote><p>以上方法都对数组中的每一项运行给定函数fn,，函数中有三个形参分别为</p><ul><li>item：数组中的每一项,</li><li>index：遍历过程中对应的索引值,</li><li>array：对数组的引用</li></ul></blockquote><h3 id="归并方法"><a href="#归并方法" class="headerlink" title="归并方法"></a>归并方法</h3><blockquote><p>这两个方法都会迭代数组中的所有项，然后生成一个最终返回值。</p></blockquote><ul><li>reduce(fn,initVal)</li><li><p>reduceRight(fn,initVal)</p><ul><li>fn(prev,cur,index,array): fn是每一项调用的函数，函数接受4个参数分别是<ul><li>prev：前一次返回值，</li><li>cur：当前值，</li><li>index：索引值，</li><li>array：当前数组，<br>函数需要返回一个值，这个值会在下一次迭代中作为prev的值</li></ul></li><li>initVal: 迭代初始值（可选），如果缺省，prev的值为数组第一项</li></ul></li></ul>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;ECMAScript (or ES) is a trademarked scripting-language specification standardized by Ecma International in ECMA-262 and ISO/IEC 16262. It was created to standardize JavaScript, so as to foster multiple independent implementations.
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="ES5" scheme="https://lee.js.org/tags/ES5/"/>
    
  </entry>
  
  <entry>
    <title>ES6语法简介</title>
    <link href="https://lee.js.org/2018/09/19/ES6%E8%AF%AD%E6%B3%95%E7%AE%80%E4%BB%8B/"/>
    <id>https://lee.js.org/2018/09/19/ES6语法简介/</id>
    <published>2018-09-19T03:29:46.000Z</published>
    <updated>2019-03-08T04:05:23.026Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>ECMAScript是一种由Ecma国际（前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association）通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛，它往往被称为JavaScript或JScript，但实际上后两者是ECMA-262标准的实现和扩展。<a id="more"></a></p><h1 id="ES6"><a href="#ES6" class="headerlink" title="ES6"></a>ES6</h1><h2 id="变量声明"><a href="#变量声明" class="headerlink" title="变量声明"></a>变量声明</h2><ul><li>let:代码块内的变量声明<ol><li>变量声明不会提升</li><li>块级作用域</li><li>let不允许相同作用域内多次声明同一变量</li></ol></li></ul><ul><li>const:常量声明<ol><li>声明后无法修改值</li><li>块级作用域</li><li>const不允许相同作用域内多次声明同一变量</li></ol></li></ul><h2 id="解构赋值"><a href="#解构赋值" class="headerlink" title="解构赋值"></a>解构赋值</h2><p>ES6允许我们对数组和对象中提取值，对变量进行赋值，这被叫做“解构”</p><ul><li>数组：</li></ul><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="number">1.</span> <span class="keyword">var</span> [a,b,c] = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>] <span class="comment">//a=1,b=2,c=3</span></span><br><span class="line"><span class="number">2.</span> <span class="keyword">var</span> [a,[[b],c]] = [<span class="number">10</span>,[[<span class="number">20</span>],<span class="number">30</span>]] <span class="comment">//a=10,b=20,c=30</span></span><br><span class="line"><span class="number">3.</span> <span class="keyword">var</span> [a,...b] = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>] <span class="comment">//a=1,b=[2,3,4];...表示剩余参数</span></span><br></pre></td></tr></table></figure><ul><li>对象：<ol><li>var {a,b}={a:’html’,b:’css’}</li><li>变量必须与对象属性名相同，否则为undefined</li><li>如果变量名与属性名不相同，则必须写成以下格式才能取到值</li></ol></li></ul><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">var</span> &#123;<span class="attr">a</span>:test&#125; =&#123;<span class="attr">a</span>:<span class="string">'html'</span>,<span class="attr">b</span>:<span class="string">'css'</span>&#125; <span class="comment">//test=&gt;html</span></span><br></pre></td></tr></table></figure><ul><li>解构失败：</li></ul><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">var</span> [a]=[],[b]=<span class="number">1</span>,[c]=<span class="string">'jiegou'</span>,[d]=<span class="literal">false</span> <span class="comment">//a,b,c,d都得到undefined</span></span><br></pre></td></tr></table></figure><ul><li>指定默认值：</li></ul><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">var</span> [a=<span class="literal">true</span>]=[]</span><br></pre></td></tr></table></figure><pre><code>var {a=10} = {}&gt; 解构同样适用于let和const&gt; PS:解构只能用于数组和对象，如果解构不成功，变量会返回undefined，但如果对undefined和null解构则会报错</code></pre><h3 id="解构用途"><a href="#解构用途" class="headerlink" title="解构用途"></a>解构用途</h3><ul><li>交换变量值</li></ul><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">var</span> [x,y] = [y,x];</span><br></pre></td></tr></table></figure><ul><li>函数返回多个值</li></ul><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></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">example</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">         <span class="keyword">return</span> [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>]</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">//接收</span></span><br><span class="line"><span class="keyword">var</span> [x,y,z] = example();</span><br></pre></td></tr></table></figure><ul><li>定义函数形参（重点）</li></ul><p>函数的参数定义方式, 不用再考虑参数的顺序<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="function"><span class="keyword">function</span> <span class="title">test</span>(<span class="params">&#123;x,y,z&#125;</span>)</span>&#123;&#125;</span><br></pre></td></tr></table></figure></p><p>//传参<br><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">test(&#123;<span class="attr">x</span>:<span class="number">10</span>,<span class="attr">y</span>:<span class="number">20</span>,<span class="attr">z</span>:<span class="number">30</span>&#125;)</span><br><span class="line"><span class="comment">//参数可以设置默认值</span></span><br><span class="line">fuction test(&#123;x=<span class="number">10</span>,y=<span class="number">20</span>,z&#125;)&#123;&#125;</span><br><span class="line"><span class="string">`</span></span><br></pre></td></tr></table></figure></p><h2 id="字符串扩展"><a href="#字符串扩展" class="headerlink" title="字符串扩展"></a>字符串扩展</h2><h3 id="字符串方法"><a href="#字符串方法" class="headerlink" title="字符串方法"></a>字符串方法</h3><ul><li>includes</li></ul><p>判断是否包含某个字符，返回布尔值<br><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><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></pre></td><td class="code"><pre><span class="line">```</span><br><span class="line">- startsWith/endsWith</span><br><span class="line"></span><br><span class="line">是否以某一字符开头/结尾</span><br><span class="line">```js</span><br><span class="line">  let str=&apos;google&apos;;</span><br><span class="line">  str.startsWith(&apos;g&apos;);  //true</span><br><span class="line">  str.endsWith(&apos;le&apos;);    //true</span><br><span class="line">  `</span><br></pre></td></tr></table></figure></p><ul><li>repeat(n)</li></ul><p>得到字符串重复n次后的结果，n可以为小数，但不能为负数<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="string">'laoxie'</span>.repeat(<span class="number">2</span>);<span class="comment">//laoxielaoxie</span></span><br></pre></td></tr></table></figure></p><h3 id="字符串模板-使用反引号-表示-重点"><a href="#字符串模板-使用反引号-表示-重点" class="headerlink" title="字符串模板, 使用反引号`表示(重点)"></a>字符串模板, 使用反引号`表示(重点)</h3><p>你可以通过一种更加美观、更加方便的方式向字符串中插入变量</p><p>格式：${变量|函数}，</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">你好，我的名字叫$&#123;username&#125;,接下来是我的自我介绍：$&#123;introduce()&#125;</span><br></pre></td></tr></table></figure><blockquote><p>模板字符串中所有的空格、新行、缩进，都会原样输出在生成的字符串中。</p></blockquote><h2 id="数组扩展"><a href="#数组扩展" class="headerlink" title="数组扩展"></a>数组扩展</h2><h3 id="遍历"><a href="#遍历" class="headerlink" title="遍历"></a>遍历</h3><ul><li>for..of</li></ul><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"><span class="keyword">var</span> arr = [<span class="number">10</span>,<span class="number">12</span>,<span class="number">18</span>,<span class="number">30</span>]</span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">var</span> value <span class="keyword">of</span> arr) &#123;</span><br><span class="line">    <span class="built_in">console</span>.log(value);</span><br><span class="line">  &#125;</span><br></pre></td></tr></table></figure><ul><li>这是最简洁、最直接的遍历数组元素的语法</li><li>这个方法避开了for-in循环的所有缺陷&gt; for…of跟for-in的区别很明显，就是直接取值，而不再取下标了</li><li>与forEach()不同的是，它可以正确响应break、continue和return语句</li><li>for-of循环不支持普通对象</li><li>for-of循环也可以遍历其它的集合</li><li>DOM节点</li><li>字符串</li><li>Set/Map集合</li></ul><h2 id="对象扩展"><a href="#对象扩展" class="headerlink" title="对象扩展"></a>对象扩展</h2><ul><li>Object.assign(obj1,obj2,…objN);</li></ul><p>合并对象<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">Object</span>.assign(&#123;<span class="attr">a</span>:<span class="number">1</span>&#125;,&#123;<span class="attr">b</span>:<span class="number">2</span>&#125;,&#123;<span class="attr">b</span>:<span class="number">4</span>,<span class="attr">c</span>:<span class="number">3</span>&#125;); <span class="comment">//&#123;a:1,b:4,c:3&#125;</span></span><br></pre></td></tr></table></figure></p><ul><li>只支持浅拷贝（对于引用类型，只拷贝引用）</li><li>忽略不可枚举属性</li><li>简写</li></ul><blockquote><p>ES6允许在对象之中直接写变量，如<br><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><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//@属性简写</span></span><br><span class="line"><span class="keyword">var</span> myName = <span class="string">'laoxie'</span>;</span><br><span class="line"><span class="keyword">var</span> obj = &#123;myName&#125;;<span class="comment">//属性名为变量名, 属性值为变量的值</span></span><br><span class="line"><span class="comment">//等效于</span></span><br><span class="line"><span class="keyword">var</span> obj = &#123;<span class="attr">myName</span>:<span class="string">'laoxie'</span>&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">//使用变量值作为属性名</span></span><br><span class="line"><span class="keyword">var</span> obj = &#123;</span><br><span class="line">    [myName]:<span class="number">18</span></span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">//等效于</span></span><br><span class="line"><span class="keyword">var</span> obj = &#123;<span class="attr">laoxie</span>:<span class="number">18</span>&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">//@方法简写</span></span><br><span class="line"><span class="keyword">var</span> obj = &#123;</span><br><span class="line">    coding()&#123;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">//等效于</span></span><br><span class="line"><span class="keyword">var</span> obj = &#123;</span><br><span class="line">    coding:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p></blockquote><h2 id="箭头函数-gt-（重点）"><a href="#箭头函数-gt-（重点）" class="headerlink" title="箭头函数=&gt;（重点）"></a>箭头函数=&gt;（重点）</h2><pre><code>格式：标识符=&gt;表达式省略了function、return关键字和大括号。</code></pre><h3 id="参数与返回值"><a href="#参数与返回值" class="headerlink" title="参数与返回值"></a>参数与返回值</h3><ul><li>零个参数用 () 表示</li></ul><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></pre></td><td class="code"><pre><span class="line"><span class="comment">//传统写法</span></span><br><span class="line">  <span class="keyword">var</span> sum = <span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">      <span class="keyword">return</span> <span class="number">10</span> + <span class="number">10</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="comment">//es6箭头函数</span></span><br><span class="line">  <span class="keyword">var</span> sum = <span class="function"><span class="params">()</span> =&gt;</span> <span class="number">10</span>+<span class="number">10</span>;</span><br></pre></td></tr></table></figure><ul><li>函数只有一个参数（可省略括号）</li></ul><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></pre></td><td class="code"><pre><span class="line"><span class="comment">//传统函数写法</span></span><br><span class="line"><span class="keyword">var</span> test = <span class="function"><span class="keyword">function</span>(<span class="params">x</span>)</span>&#123;</span><br><span class="line">    <span class="keyword">return</span> x+<span class="number">2</span>;</span><br><span class="line">&#125;    <span class="comment">//使用箭头函数</span></span><br><span class="line"><span class="keyword">var</span> test = <span class="function"><span class="params">x</span>=&gt;</span>x+<span class="number">2</span>;</span><br></pre></td></tr></table></figure><ul><li>多个参数</li></ul><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></pre></td><td class="code"><pre><span class="line"><span class="comment">// ES5</span></span><br><span class="line">  <span class="keyword">var</span> total = values.reduce(<span class="function"><span class="keyword">function</span> (<span class="params">a, b</span>) </span>&#123;</span><br><span class="line">    <span class="keyword">return</span> a + b;</span><br><span class="line">  &#125;, <span class="number">0</span>);</span><br><span class="line">  <span class="comment">// ES6</span></span><br><span class="line">  <span class="keyword">var</span> total = values.reduce(<span class="function">(<span class="params">a, b</span>) =&gt;</span> a + b, <span class="number">0</span>);</span><br></pre></td></tr></table></figure><ul><li>函数中包含多行代码时用代码块括起来</li></ul><blockquote><p>ES6中的规则是，紧随箭头的{被解析为块的开始，而不是对象的开始<br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">// ES5</span></span><br><span class="line">    $(<span class="string">"#confetti-btn"</span>).click(<span class="function"><span class="keyword">function</span> (<span class="params">event</span>) </span>&#123;</span><br><span class="line">     playTrumpet();       fireConfettiCannon();</span><br><span class="line">   &#125;);</span><br><span class="line">   <span class="comment">// ES6</span></span><br><span class="line">   $(<span class="string">"#confetti-btn"</span>).click(<span class="function"><span class="params">event</span> =&gt;</span> &#123;</span><br><span class="line">     playTrumpet();</span><br><span class="line">     fireConfettiCannon();</span><br><span class="line">   &#125;);</span><br></pre></td></tr></table></figure></p></blockquote><ul><li>使用了块语句的箭头函数不会自动返回值，你需要使用return语句将所需值返回</li><li>当使用箭头函数返回一个普通对象时，需要将对象包裹在小括号里</li></ul><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="comment">//传统写法</span></span><br><span class="line">    <span class="keyword">var</span> createPerson = <span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">        <span class="keyword">return</span> &#123;<span class="attr">name</span>:<span class="string">'laoxie'</span>,<span class="attr">age</span>:<span class="number">18</span>&#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="comment">// ES6</span></span><br><span class="line">    <span class="keyword">var</span> createPerson = <span class="function"><span class="params">()</span>=&gt;</span>&#123;<span class="attr">name</span>:<span class="string">'laoxie'</span>,<span class="attr">age</span>:<span class="number">18</span>&#125;;   <span class="comment">// 这样写会报Bug！</span></span><br><span class="line">    <span class="keyword">var</span> createPerson = <span class="function"><span class="params">()</span>=&gt;</span>(&#123;<span class="attr">name</span>:<span class="string">'laoxie'</span>,<span class="attr">age</span>:<span class="number">18</span>&#125;);</span><br></pre></td></tr></table></figure><ul><li><p>默认参数。</p><figure class="highlight js"><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">var</span> func1 = <span class="function">(<span class="params">x = <span class="number">1</span>, y = <span class="number">2</span></span>) =&gt;</span> x + y;</span><br><span class="line">  func1(); <span class="comment">// 得到 3</span></span><br></pre></td></tr></table></figure></li><li><p>剩余参数</p><figure class="highlight js"><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">var</span> func2 = <span class="function">(<span class="params">x, ...args</span>) =&gt;</span> &#123; <span class="built_in">console</span>.log(args) &#125;;</span><br><span class="line">  func2(<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>); <span class="comment">// 输出 [2, 3]</span></span><br></pre></td></tr></table></figure></li></ul><h3 id="箭头函数中的this值"><a href="#箭头函数中的this值" class="headerlink" title="箭头函数中的this值"></a>箭头函数中的this值</h3><pre><code>箭头函数没有它自己的this值，箭头函数内的this值继承自外围作用域</code></pre><h2 id="Symbol数据类型"><a href="#Symbol数据类型" class="headerlink" title="Symbol数据类型"></a>Symbol数据类型</h2><pre><code>ES6引入了一种新的原始数据类型Symbol，表示独一无二的值，一旦创建后就不可更改。</code></pre><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></pre></td><td class="code"><pre><span class="line"><span class="comment">// 没有参数的情况</span></span><br><span class="line">    <span class="keyword">var</span> s1 = <span class="built_in">Symbol</span>();</span><br><span class="line">    <span class="keyword">var</span> s2 = <span class="built_in">Symbol</span>();</span><br><span class="line"></span><br><span class="line">    s1 === s2 <span class="comment">// false</span></span><br></pre></td></tr></table></figure><ul><li><p>Symbol函数可以接受一个字符串作为参数，表示对Symbol实例的描述，主要是为了标识和区分，对调式非常有用</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"><span class="comment">// 有参数的情况</span></span><br><span class="line"><span class="keyword">var</span> s1 = <span class="built_in">Symbol</span>(<span class="string">"foo"</span>);</span><br><span class="line"><span class="keyword">var</span> s2 = <span class="built_in">Symbol</span>(<span class="string">"foo"</span>);</span><br><span class="line">s1 === s2 <span class="comment">// false</span></span><br></pre></td></tr></table></figure></li><li><p>Symbol值不能与其他类型的值进行运算</p></li></ul><h3 id="用途"><a href="#用途" class="headerlink" title="用途"></a>用途</h3><ul><li><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><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="keyword">var</span> mySymbol = <span class="built_in">Symbol</span>();</span><br><span class="line">  <span class="comment">// 第一种写法</span></span><br><span class="line">  <span class="keyword">var</span> a = &#123;&#125;;</span><br><span class="line">  a[mySymbol] = <span class="string">'Nani'</span>;</span><br><span class="line">  <span class="comment">// 第二种写法（注意加方括号，否则回被当作普通属性）</span></span><br><span class="line">  <span class="keyword">var</span> a = &#123;</span><br><span class="line">    [mySymbol]: <span class="string">'Nani'</span></span><br><span class="line">  &#125;;</span><br><span class="line">  <span class="comment">// 以上写法都得到同样结果</span></span><br><span class="line">  a[mySymbol] <span class="comment">// "Nani"</span></span><br></pre></td></tr></table></figure></li></ul><h3 id="常用方法"><a href="#常用方法" class="headerlink" title="常用方法"></a>常用方法</h3><ul><li><p>Symbol.for()<br>  有时我们希望重新使用同一个Symbol值，Symbol.for方法可以做到这一点，首先在全局中搜索<strong>已登记</strong>的Symbol值，如果有，就返回这个Symbol值，否则就新建并返回一个以该字符串为名称的Symbol值&gt; 直接用Symbol()方法创建的Symbol值不会被登记</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"><span class="keyword">let</span> one = <span class="built_in">Symbol</span>(<span class="string">"laoxie"</span>);</span><br><span class="line"><span class="keyword">let</span> two = <span class="built_in">Symbol</span>.for(<span class="string">"laoxie"</span>);</span><br><span class="line"><span class="comment">//由于创建了两个Symbol值，所以他们不相等</span></span><br><span class="line"> <span class="built_in">console</span>.log(one===two);<span class="comment">//false</span></span><br></pre></td></tr></table></figure></li><li><p>Symbol.keyFor()<br>  获取被登记的Symbol值&gt; 直接使用Symbo()创建的Symbol值的键不会被登记，所以也就获取不到</p></li></ul><h2 id="Map集合"><a href="#Map集合" class="headerlink" title="Map集合"></a>Map集合</h2><pre><code>Map集合,即映射</code></pre><ul><li>设置</li></ul><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"><span class="keyword">let</span> map = <span class="keyword">new</span> <span class="built_in">Map</span>();</span><br><span class="line">    map.set(<span class="string">"S0"</span>, <span class="string">"张三"</span>);   </span><br><span class="line">    map.set(<span class="string">"S1"</span>, <span class="string">"李四"</span>);    </span><br><span class="line">    map.set(<span class="string">"S2"</span>, <span class="string">"王五"</span>);</span><br></pre></td></tr></table></figure><ul><li>获取</li></ul><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">map.get(<span class="string">"s2"</span>); <span class="comment">//王五</span></span><br></pre></td></tr></table></figure><ul><li>循环遍历，配合解构赋值</li></ul><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">for</span>(<span class="keyword">let</span> [key,value] <span class="keyword">of</span> map)&#123;</span><br><span class="line">        <span class="built_in">console</span>.log(key,value);</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure><h3 id="方法"><a href="#方法" class="headerlink" title="方法"></a>方法</h3><ul><li>keys() 获取所有键</li><li>values() 获取所有值</li><li>entries() 获取所有键值对，返回类数组</li></ul><h2 id="Set集合"><a href="#Set集合" class="headerlink" title="Set集合"></a>Set集合</h2><p>Set集合，类似于数组，但是成员的值都是唯一的，没有重复的值。</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> imgs = <span class="keyword">new</span> <span class="built_in">Set</span>();</span><br><span class="line">    imgs.add(<span class="number">1</span>）;</span><br><span class="line">    imgs.add(<span class="number">1</span>);</span><br><span class="line">    imgs.add(<span class="number">5</span>);</span><br><span class="line">    imgs.add(<span class="string">"5"</span>);</span><br><span class="line">    imgs.add(<span class="keyword">new</span> <span class="built_in">String</span>(<span class="string">"abc"</span>)）;</span><br><span class="line">    imgs.add(<span class="keyword">new</span> <span class="built_in">String</span>(<span class="string">"abc"</span>)）;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//打印的结果： 1  5  '5'  'abc'  'abc'</span></span><br></pre></td></tr></table></figure><blockquote><p>Set集合是默认去重复的，但前提是两个添加的元素严格相等，所以5和”5”不相等，两个new出来的字符串不相等</p></blockquote><ul><li>[案例] 去重数组</li></ul><p>SET集合没有提供下标方式的访问，因此只能使用for…of来遍历。由于Set集合本质上还是一个map，因此会有以下几种遍历方法</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><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> imgs = <span class="keyword">new</span> <span class="built_in">Set</span>([<span class="string">'a'</span>,<span class="string">'b'</span>,<span class="string">'c'</span>]); <span class="comment">//根据KEY遍历</span></span><br><span class="line"><span class="keyword">for</span>(<span class="keyword">let</span> item <span class="keyword">of</span> imgs.keys())&#123;</span><br><span class="line">     <span class="built_in">console</span>.log(item);</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">//a</span></span><br><span class="line"><span class="comment">//b</span></span><br><span class="line"><span class="comment">//c</span></span><br><span class="line"></span><br><span class="line"><span class="comment">//根据VALUE遍历</span></span><br><span class="line"><span class="keyword">for</span>(<span class="keyword">let</span> item <span class="keyword">of</span> imgs.values())&#123;</span><br><span class="line">    <span class="built_in">console</span>.log(item);</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">//a</span></span><br><span class="line"><span class="comment">//b</span></span><br><span class="line"><span class="comment">//c</span></span><br><span class="line"></span><br><span class="line"><span class="comment">//根据KEY-VALUE遍历</span></span><br><span class="line"><span class="keyword">for</span>(<span class="keyword">let</span> item <span class="keyword">of</span> imgs.entries())&#123;</span><br><span class="line">    <span class="built_in">console</span>.log(item);</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">//['a','a']</span></span><br><span class="line"><span class="comment">//['b','b']</span></span><br><span class="line"><span class="comment">//['c','c']</span></span><br><span class="line"></span><br><span class="line"><span class="comment">//普通for...of循环</span></span><br><span class="line"><span class="keyword">for</span>(<span class="keyword">let</span> item <span class="keyword">of</span> imgs)&#123;</span><br><span class="line">    <span class="built_in">console</span>.log(item);</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">//a</span></span><br><span class="line"><span class="comment">//b</span></span><br><span class="line"><span class="comment">//c</span></span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;ECMAScript是一种由Ecma国际（前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association）通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛，它往往被称为JavaScript或JScript，但实际上后两者是ECMA-262标准的实现和扩展。
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="ES6" scheme="https://lee.js.org/tags/ES6/"/>
    
  </entry>
  
  <entry>
    <title>vue与echarts显示隐藏</title>
    <link href="https://lee.js.org/2018/08/22/vue%E4%B8%8Eecharts%E6%98%BE%E7%A4%BA%E9%9A%90%E8%97%8F/"/>
    <id>https://lee.js.org/2018/08/22/vue与echarts显示隐藏/</id>
    <published>2018-08-22T10:44:57.000Z</published>
    <updated>2019-03-08T04:04:42.097Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>随着项目需求，我们有时候会用到vue+echarts；有时候ecahrts图表需要在适当的时候进行显示隐藏，对于众多vue使用者来说显示隐藏==&gt;v-show;我也不例外。使用v-show的确可以做到显示隐藏但是echarts图表的宽高会不受控制。<a id="more"></a></p><h2 id="知识点"><a href="#知识点" class="headerlink" title="知识点"></a>知识点</h2><p>在此之前我们先来理解一下vue的显示隐藏：</p><ul><li>v-show</li><li>v-if<figure class="highlight maxima"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">这两个都可以进行显示隐藏，不过v-<span class="built_in">show</span>相当于加了属性=&gt;<span class="built_in">display</span>:none;而v-<span class="keyword">if</span>是不渲染改节点，这两者有着质的区别</span><br></pre></td></tr></table></figure></li></ul><h3 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h3><h2 id="单纯的显示隐藏"><a href="#单纯的显示隐藏" class="headerlink" title="单纯的显示隐藏"></a>单纯的显示隐藏</h2><figure class="highlight groovy"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">对于单纯的显示隐藏使用v-<span class="keyword">if</span>,切在的当前页面只渲染一次；这种情况使用v-<span class="keyword">if</span>即可。当然还有给echarts图表添加属性 <span class="string">grid:</span>&#123;<span class="string">containLabel:</span><span class="literal">true</span>&#125;</span><br></pre></td></tr></table></figure><h2 id="复杂的显示隐藏"><a href="#复杂的显示隐藏" class="headerlink" title="复杂的显示隐藏"></a>复杂的显示隐藏</h2><p>对于需要反复重新渲染的echarts图表如果使用v-if的话，初始化时是可行的，但是切换重新渲染会抛出错误 attributes is not defined。因此我们不能使用v-if;</p><p>思路：</p><ul><li>报错原因=&gt;节点不存在</li><li>显示隐藏底层是display:none;或者opacity:0;</li></ul><p>代码：<br><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></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">"charts"</span> <span class="attr">style</span>=<span class="string">"display:none;"</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">"indent"</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">"indent_icon"</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">span</span> <span class="attr">class</span>=<span class="string">"indent_ratio"</span>&gt;</span>订单占比<span class="tag">&lt;/<span class="name">span</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">"indent_kong"</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>&gt;</span></span><br><span class="line"></span><br><span class="line">         <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"myChart"</span> &gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">         <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">"indent_two"</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">"indent_icon"</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">span</span> <span class="attr">class</span>=<span class="string">"indent_ratio"</span>&gt;</span>订单趋势<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">           <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"rise"</span> <span class="attr">v-show</span>=<span class="string">"isactive!=1"</span>&gt;</span>&#123;&#123;huanbi&#125;&#125;<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">           <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"increase"</span> <span class="attr">v-show</span>=<span class="string">"isactive!=1"</span>&gt;</span>环比增长<span class="tag">&lt;/<span class="name">span</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">"indent_kong"</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>&gt;</span></span><br><span class="line">         <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"myChart_two"</span> <span class="attr">:style</span>=<span class="string">"&#123;width: '100%', height: '300px','margin-bottom':'1rem',&#125;"</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>&gt;</span></span><br></pre></td></tr></table></figure></p><p>重新渲染:<br><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><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">getEcharts:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">      <span class="comment">//echarts图表数据</span></span><br><span class="line">      <span class="keyword">var</span> USaferss=&#123;</span><br><span class="line">            Action:<span class="string">"/Itil/face/V1801090100.G.JSON"</span>,</span><br><span class="line">            Result:&#123;&#125;,</span><br><span class="line">            Values:&#123;</span><br><span class="line">                      <span class="comment">// select:'time',</span></span><br><span class="line">                      <span class="comment">//staDate:'2017-03-06'</span></span><br><span class="line">                      find:<span class="string">'time2'</span>,</span><br><span class="line">                      type:<span class="keyword">this</span>.isactive,</span><br><span class="line">                      f_itil_1801090105_E01:<span class="keyword">this</span>.companycode,</span><br><span class="line"></span><br><span class="line">                  &#125;,</span><br><span class="line">              Upload:<span class="literal">false</span>,</span><br><span class="line">            Finish:<span class="function">(<span class="params">v</span>)=&gt;</span>&#123;</span><br><span class="line">                <span class="keyword">var</span> Sv=v.data.OutData;</span><br><span class="line">                          <span class="keyword">this</span>.times = Sv;</span><br><span class="line">                          <span class="keyword">this</span>.huanbi = <span class="keyword">this</span>.times.seq;</span><br><span class="line">                          <span class="keyword">this</span>.all = <span class="keyword">this</span>.times.all;</span><br><span class="line">                          <span class="built_in">console</span>.log( <span class="keyword">this</span>.huanbi);</span><br><span class="line">                          <span class="built_in">console</span>.log(<span class="keyword">this</span>.times.appli);</span><br><span class="line">                          <span class="built_in">console</span>.log(Sv);</span><br><span class="line">                          <span class="keyword">var</span> charts = <span class="built_in">document</span>.getElementById(<span class="string">'charts'</span>);</span><br><span class="line">                          <span class="keyword">if</span>( <span class="keyword">this</span>.all==<span class="number">0</span>)&#123;</span><br><span class="line"></span><br><span class="line">                            charts.style.display=<span class="string">"none"</span>;</span><br><span class="line">                          &#125;<span class="keyword">else</span>&#123;</span><br><span class="line">                            charts.style.display=<span class="string">"block"</span>;</span><br><span class="line">                            <span class="keyword">this</span>.drawLine(<span class="keyword">this</span>.times);</span><br><span class="line"></span><br><span class="line">                            <span class="keyword">this</span>.drawLinetwo(<span class="keyword">this</span>.times);</span><br><span class="line">                          &#125;</span><br><span class="line"></span><br><span class="line">            &#125;,</span><br><span class="line">            Errors:<span class="function">(<span class="params">v</span>)=&gt;</span>&#123;&#125;</span><br><span class="line">      &#125;;</span><br><span class="line"></span><br><span class="line">      <span class="keyword">this</span>.PstData(USaferss,<span class="string">"G"</span>);  </span><br><span class="line">  &#125;,</span><br></pre></td></tr></table></figure></p><p>这样我们就可以实时切换图表了，无数据则隐藏，有数据就显示；默认一定要是隐藏状态o,希望对你有所帮助！</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;随着项目需求，我们有时候会用到vue+echarts；有时候ecahrts图表需要在适当的时候进行显示隐藏，对于众多vue使用者来说显示隐藏==&amp;gt;v-show;我也不例外。使用v-show的确可以做到显示隐藏但是echarts图表的宽高会不受控制。
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Echarts" scheme="https://lee.js.org/tags/Echarts/"/>
    
      <category term="Vue" scheme="https://lee.js.org/tags/Vue/"/>
    
  </entry>
  
  <entry>
    <title>Vue 小程序表达式</title>
    <link href="https://lee.js.org/2018/08/03/Vue-%E5%B0%8F%E7%A8%8B%E5%BA%8F%E8%A1%A8%E8%BE%BE%E5%BC%8F/"/>
    <id>https://lee.js.org/2018/08/03/Vue-小程序表达式/</id>
    <published>2018-08-03T09:10:03.000Z</published>
    <updated>2019-03-08T04:05:04.267Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>最近写了很多动态添加类名或者tab标签切换的表达式，遇到过很多的坑，下面为大家分享一下我遇到的几种。<a id="more"></a></p><h2 id="v-show以及微信wx-if的使用（以这两个为例）"><a href="#v-show以及微信wx-if的使用（以这两个为例）" class="headerlink" title="v-show以及微信wx:if的使用（以这两个为例）"></a><strong><em>v-show以及微信wx:if的使用（以这两个为例）</em></strong></h2><h3 id="v-show"><a href="#v-show" class="headerlink" title="v-show"></a>v-show</h3><p>v-show后面可以在引号里面直接写true or false<br><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></pre></td><td class="code"><pre><span class="line">&lt;span class=&quot;rise&quot; v-show=&quot;isactive!=1&quot;&gt;&#123;&#123;huanbi&#125;&#125;&lt;/span&gt;</span><br><span class="line">&lt;span class=&quot;rise&quot; v-show=&quot;false&quot;&gt;&#123;&#123;huanbi&#125;&#125;&lt;/span&gt;</span><br><span class="line">&lt;span class=&quot;rise&quot; v-show=&quot;true&quot;&gt;&#123;&#123;huanbi&#125;&#125;&lt;/span&gt;</span><br></pre></td></tr></table></figure></p><h3 id="wx-if"><a href="#wx-if" class="headerlink" title="wx:if"></a>wx:if</h3><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">wx:if在引号里面必须有&#123;&#123;&#125;&#125;</span><br><span class="line"># 在hexojs中直接写&#123;&#123;&#125;&#125;会抛出环境错误</span><br></pre></td></tr></table></figure><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">&lt;view wx:if=&quot;&#123;&#123;false&#125;&#125;&quot;  class=&quot;Theuser&quot; style=&quot;height:85rpx;&quot;&gt;</span><br><span class="line">      &lt;label&gt;渠道编号：&lt;/label&gt;</span><br><span class="line">      &lt;view style=&quot;height:100%;float:right;margin-right:24rpx;line-height:88rpx;&quot;&gt;&#123;&#123;qudaocode&#125;&#125;&lt;/view&gt;</span><br><span class="line">&lt;/view&gt;</span><br></pre></td></tr></table></figure><p><strong><em>注：在使用wx:if时有时候会出现闪现问题，其一先清除默认值，其二要使用全等</em></strong></p><h2 id="v-for与wx-for"><a href="#v-for与wx-for" class="headerlink" title="v-for与wx:for"></a><strong><em>v-for与wx:for</em></strong></h2><h3 id="v-for"><a href="#v-for" class="headerlink" title="v-for"></a>v-for</h3><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">class</span>=<span class="string">"list"</span>  <span class="attr">v-for</span>=<span class="string">"item in list"</span> <span class="attr">:key</span>=<span class="string">"item.id"</span> <span class="attr">:price</span>=<span class="string">"[item.f_itil_1801090109_006]"</span> <span class="attr">:name</span>=<span class="string">"[item.f_itil_1801090109_P01]"</span>&gt;</span></span><br></pre></td></tr></table></figure><p>如果需要使用索引<br><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="tag">&lt;<span class="name">li</span> <span class="attr">v-for</span>=<span class="string">"item in items"</span>&gt;</span></span><br><span class="line">    &#123;&#123;parentMessage&#125;&#125; - &#123;&#123;$index&#125;&#125; - &#123;&#123;item.message&#125;&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-for</span>=<span class="string">"(index, item) in items"</span>&gt;</span></span><br><span class="line">  &#123;&#123;index&#125;&#125; &#123;&#123;item.message&#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></p><h3 id="wx-for"><a href="#wx-for" class="headerlink" title="wx:for"></a>wx:for</h3><figure class="highlight plain"><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">wx:for=&quot;&#123;&#123;Alldata&#125;&#125;&quot; wx:key=&quot;&quot;</span><br><span class="line">#Alldata 为数组 使用索引时直接用&#123;&#123;index&#125;&#125;即可</span><br></pre></td></tr></table></figure><h3 id="三元运算"><a href="#三元运算" class="headerlink" title="三元运算"></a><strong><em>三元运算</em></strong></h3><figure class="highlight scala"><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">&lt;div <span class="class"><span class="keyword">class</span></span>=<span class="string">"btn_date"</span> <span class="meta">@click</span>=<span class="string">"choose"</span>&gt;</span><br><span class="line">            &lt;span <span class="class"><span class="keyword">class</span></span>=<span class="string">"er"</span> :<span class="class"><span class="keyword">class</span></span>=<span class="string">"[status==1?'active':'']"</span> :name=<span class="string">"1"</span>&gt;日&lt;/span&gt;</span><br><span class="line">            &lt;span <span class="class"><span class="keyword">class</span></span>=<span class="string">"er"</span> :<span class="class"><span class="keyword">class</span></span>=<span class="string">"[status==2?'active':'']"</span> :name=<span class="string">"2"</span>&gt;周&lt;/span&gt;</span><br><span class="line">            &lt;span <span class="class"><span class="keyword">class</span></span>=<span class="string">"er"</span> :<span class="class"><span class="keyword">class</span></span>=<span class="string">"[status==3?'active':'']"</span> :name=<span class="string">"3"</span>&gt;月&lt;/span&gt;</span><br><span class="line">            &lt;span <span class="class"><span class="keyword">class</span></span>=<span class="string">"er"</span> :<span class="class"><span class="keyword">class</span></span>=<span class="string">"[status==4?'active':'']"</span> :name=<span class="string">"4"</span>&gt;年&lt;/span&gt;</span><br><span class="line">&lt;/div&gt;</span><br><span class="line"><span class="comment">//简单的点击添加类名</span></span><br></pre></td></tr></table></figure><figure class="highlight cos"><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">&lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"header"</span> bindtap=<span class="string">"choosetype"</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"&#123;&#123;isactive == 1?'active':''&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"1"</span>&gt;全部&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"&#123;&#123;isactive == 2?'active':''&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"2"</span>&gt;待接单&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"&#123;&#123;isactive == 3?'active':''&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"3"</span>&gt;处理中&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"&#123;&#123;isactive == 4?'active':''&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"4"</span>&gt;已完成&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">&lt;/<span class="keyword">view</span>&gt;</span><br></pre></td></tr></table></figure><figure class="highlight cos"><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">&lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"header"</span> bindtap=<span class="string">"choosetype"</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"er &#123;&#123;isactive == 1?'active':''&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"1"</span>&gt;全部&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"er &#123;&#123;isactive == 2?'active':''&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"2"</span>&gt;待接单&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"er &#123;&#123;isactive == 3?'active':''&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"3"</span>&gt;处理中&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"er &#123;&#123;isactive == 4?'active':''&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"4"</span>&gt;已完成&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">&lt;/<span class="keyword">view</span>&gt;</span><br></pre></td></tr></table></figure><figure class="highlight cos"><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">&lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"header"</span> bindtap=<span class="string">"choosetype"</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"&#123;&#123;isactive == 1?'active er':'er'&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"1"</span>&gt;全部&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"&#123;&#123;isactive == 2?'active er':'er'&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"2"</span>&gt;待接单&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"&#123;&#123;isactive == 3?'active er':'er'&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"3"</span>&gt;处理中&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">            &lt;<span class="keyword">view</span> <span class="keyword">class</span>=<span class="string">"&#123;&#123;isactive == 4?'active er':'er'&#125;&#125;"</span> data-<span class="keyword">set</span>=<span class="string">"4"</span>&gt;已完成&lt;/<span class="keyword">view</span>&gt;</span><br><span class="line">&lt;/<span class="keyword">view</span>&gt;</span><br></pre></td></tr></table></figure><p><strong><em>注：小程序里面不能写2个class会报错，vue可以写</em></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><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">image</span> <span class="attr">src</span>=<span class="string">"&#123;&#123;ischoose=='1'?[chec;]:[uncheck]&#125;&#125;"</span>&gt;</span><span class="tag">&lt;/<span class="name">image</span>&gt;</span></span><br><span class="line"></span><br><span class="line">####</span><br><span class="line">data:&#123;</span><br><span class="line">  chec:'wwqeq',</span><br><span class="line">  uncheck:'sdsadasd'</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="未完待续"><a href="#未完待续" class="headerlink" title="未完待续"></a><strong><em>未完待续</em></strong></h2>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;最近写了很多动态添加类名或者tab标签切换的表达式，遇到过很多的坑，下面为大家分享一下我遇到的几种。
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Vue" scheme="https://lee.js.org/tags/Vue/"/>
    
      <category term="Mini-apps" scheme="https://lee.js.org/tags/Mini-apps/"/>
    
  </entry>
  
  <entry>
    <title>移动端拖拽</title>
    <link href="https://lee.js.org/2018/07/23/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E6%8B%96%E6%8B%BD/"/>
    <id>https://lee.js.org/2018/07/23/移动端拖拽/</id>
    <published>2018-07-23T09:56:10.000Z</published>
    <updated>2019-03-08T04:04:53.247Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p> 最近在做一个混合开发的项目，需求里面要求使用拖拽，然而这不是jq的拖拽；我向很多大佬求助过，有一位大佬建议我去使用<a href="https://www.cnblogs.com/qianduanjingying/p/5812139.html" target="_blank" rel="noopener">hammer.js</a>;由于时间紧迫我不得不放弃这一方法。还有大佬向我推荐vue封装的插件，然而我试了一下有局限性，position:absolute==&gt;我想要是的fixed；还有通过指令的方法等等我都试了不好用；求人不如求己下面我将为大家介绍一种简单的方法（适用于vue）<a id="more"></a></p><h2 id="完整代码展示"><a href="#完整代码展示" class="headerlink" title="完整代码展示"></a>完整代码展示</h2> <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><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><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br></pre></td><td class="code"><pre><span class="line"> &lt;template&gt;</span><br><span class="line">    &lt;div <span class="class"><span class="keyword">class</span></span>=<span class="string">"detail"</span>&gt;</span><br><span class="line">        &lt;!-- 头部 --&gt;</span><br><span class="line">        &lt;app-header&gt;<span class="xml"><span class="tag">&lt;/<span class="name">app-header</span>&gt;</span></span></span><br><span class="line"><span class="xml">        <span class="comment">&lt;!-- 报障人信息 --&gt;</span></span></span><br><span class="line">        &lt;app-person&gt;&lt;/app-person&gt;</span><br><span class="line">        &lt;!-- 报障内容 --&gt;</span><br><span class="line">        &lt;app-content&gt;&lt;/app-content&gt;</span><br><span class="line">        &lt;!-- 处理进度 --&gt;</span><br><span class="line">        &lt;app-progress&gt;&lt;/app-progress&gt;</span><br><span class="line">        &lt;!-- 底部导航栏 --&gt;</span><br><span class="line">        &lt;app-nav&gt;&lt;/app-nav&gt;</span><br><span class="line">        &lt;!-- 遮罩层 --&gt;</span><br><span class="line">        &lt;div class="home" id="moveDiv" @click="gohome" @touchstart="down" @touchmove="move"  @touchend="end"&gt;</span><br><span class="line">          &lt;img src="../../../../Img/img/home.png" alt=""&gt;</span><br><span class="line">        &lt;/div&gt;</span><br><span class="line">    &lt;/div&gt;</span><br><span class="line">&lt;/template&gt;</span><br><span class="line"></span><br><span class="line">&lt;script&gt;</span><br><span class="line">import AppHeader from "./vue/header.vue";</span><br><span class="line">import AppPerson from "./vue/person.vue";</span><br><span class="line">import AppContent from "./vue/content.vue";</span><br><span class="line">import AppProgress from "./vue/progress.vue";</span><br><span class="line">import AppNav from "./vue/nav.vue";</span><br><span class="line">// import AppMask from './vue/mask.vue';</span><br><span class="line"></span><br><span class="line">export default &#123;</span><br><span class="line">  data() &#123;</span><br><span class="line">    return &#123;</span><br><span class="line">      flags: false,</span><br><span class="line">      position: &#123;</span><br><span class="line">        x: 0,</span><br><span class="line">        y: 0</span><br><span class="line">      &#125;,</span><br><span class="line">      nx: '',</span><br><span class="line">      ny: '',</span><br><span class="line">      dx: '',</span><br><span class="line">      dy: '',</span><br><span class="line">      xPum: '',</span><br><span class="line">      yPum: '',</span><br><span class="line">    &#125;;</span><br><span class="line">  &#125;,</span><br><span class="line">  methods: &#123;</span><br><span class="line">    gohome:function()&#123;</span><br><span class="line">      //跳转home</span><br><span class="line">      this.$router.push(&#123;</span><br><span class="line">           name:'index',</span><br><span class="line">          //  query:&#123;engineerNum:this.engineerNum&#125;</span><br><span class="line">         &#125;)</span><br><span class="line">    &#125;,</span><br><span class="line">    down()&#123;</span><br><span class="line">      console.log('down');</span><br><span class="line">      this.flags = true;</span><br><span class="line">      var touch ;</span><br><span class="line">      if(event.touches)&#123;</span><br><span class="line">          touch = event.touches[0];</span><br><span class="line">      &#125;else &#123;</span><br><span class="line">          touch = event;</span><br><span class="line">      &#125;</span><br><span class="line">      this.position.x = touch.clientX;</span><br><span class="line">      this.position.y = touch.clientY;</span><br><span class="line">      this.dx = moveDiv.offsetLeft;</span><br><span class="line">      this.dy = moveDiv.offsetTop;</span><br><span class="line">    &#125;,</span><br><span class="line">    preHandler:function(e)&#123;</span><br><span class="line">      e.preventDefault();</span><br><span class="line">    &#125;,</span><br><span class="line">    move()&#123;</span><br><span class="line"></span><br><span class="line">      console.log('move');</span><br><span class="line">      if(this.flags)&#123;</span><br><span class="line">        var touch ;</span><br><span class="line">        if(event.touches)&#123;</span><br><span class="line">            touch = event.touches[0];</span><br><span class="line">        &#125;else &#123;</span><br><span class="line">            touch = event;</span><br><span class="line">        &#125;</span><br><span class="line">        this.nx = touch.clientX - this.position.x;</span><br><span class="line">        this.ny = touch.clientY - this.position.y;</span><br><span class="line">        this.xPum = this.dx+this.nx;</span><br><span class="line">        this.yPum = this.dy+this.ny;</span><br><span class="line">        moveDiv.style.left = this.xPum+"px";</span><br><span class="line">        moveDiv.style.top = this.yPum +"px";</span><br><span class="line">        //阻止页面的滑动默认事件</span><br><span class="line">        document.addEventListener("touchmove",this.preHandler,false);</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;,</span><br><span class="line"></span><br><span class="line">    end()&#123;</span><br><span class="line"></span><br><span class="line">      console.log('end');</span><br><span class="line">      //alert(e3);</span><br><span class="line">        this.flags = false;</span><br><span class="line">        document.removeEventListener('touchmove', this.preHandler, false);</span><br><span class="line">    &#125;,</span><br><span class="line">  &#125;,</span><br><span class="line">  components: &#123;</span><br><span class="line">      AppHeader,</span><br><span class="line">      AppPerson,</span><br><span class="line">      AppContent,</span><br><span class="line">      AppProgress,</span><br><span class="line">      AppNav</span><br><span class="line">      // AppMask</span><br><span class="line">  &#125;</span><br><span class="line">&#125;;</span><br><span class="line">&lt;/script&gt;</span><br><span class="line"></span><br><span class="line">&lt;style scoped lang="less"&gt;</span><br><span class="line">.detail &#123;</span><br><span class="line">  position: relative;</span><br><span class="line">  min-height:100%;</span><br><span class="line">&#125;</span><br><span class="line">.home&#123;</span><br><span class="line">  position:fixed;</span><br><span class="line">  right:.2rem;</span><br><span class="line">  bottom:15%;</span><br><span class="line">  line-height:1rem;</span><br><span class="line">  width:.98rem;</span><br><span class="line">  height:.98rem;</span><br><span class="line">  img&#123;</span><br><span class="line">    width:.98rem;</span><br><span class="line">    height:.98rem;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line">&lt;/style&gt;</span><br></pre></td></tr></table></figure><h2 id="相关知识点"><a href="#相关知识点" class="headerlink" title="相关知识点"></a>相关知识点</h2><p><em>touchstart</em>当在屏幕上按下手指时触发<br><em>touchmove</em> 当在屏幕上移动手指时触发</p><p><em>touchend</em> 当在屏幕上抬起手指时触发<br><em>mousedown mousemove mouseup</em>对应的是PC端的事件</p><p><em>touchcancel</em> 当一些更高级别的事件发生的时候（如电话接入或者弹出信息）会取消当前的touch操作，即触发touchcancel。一般  会在touchcancel时暂停游戏、存档等操作。</p><h2 id="效果图（非对应的界面由于环境问题）"><a href="#效果图（非对应的界面由于环境问题）" class="headerlink" title="效果图（非对应的界面由于环境问题）"></a>效果图（非对应的界面由于环境问题）</h2><p><div align="center"><img src="/img/touch04.gif" alt="拖住啊哦"></div></p><h2 id="步骤详解"><a href="#步骤详解" class="headerlink" title="步骤详解"></a>步骤详解</h2><h3 id="HTML"><a href="#HTML" class="headerlink" title="HTML"></a>HTML</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><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">"detail"</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">"home"</span> <span class="attr">id</span>=<span class="string">"moveDiv"</span> @<span class="attr">click</span>=<span class="string">"gohome"</span> @<span class="attr">touchstart</span>=<span class="string">"down"</span> @<span class="attr">touchmove</span>=<span class="string">"move"</span>  @<span class="attr">touchend</span>=<span class="string">"end"</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">"../../../../Img/img/home.png"</span> <span class="attr">alt</span>=<span class="string">""</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></pre></td></tr></table></figure><h3 id="JS"><a href="#JS" class="headerlink" title="JS"></a>JS</h3><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><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></pre></td><td class="code"><pre><span class="line">down()&#123;</span><br><span class="line">  <span class="built_in">console</span>.log(<span class="string">'down'</span>);</span><br><span class="line">  <span class="keyword">this</span>.flags = <span class="literal">true</span>;</span><br><span class="line">  <span class="keyword">var</span> touch ;</span><br><span class="line">  <span class="keyword">if</span>(event.touches)&#123;</span><br><span class="line">      touch = event.touches[<span class="number">0</span>];</span><br><span class="line">  &#125;<span class="keyword">else</span> &#123;</span><br><span class="line">      touch = event;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">this</span>.position.x = touch.clientX;</span><br><span class="line">  <span class="keyword">this</span>.position.y = touch.clientY;</span><br><span class="line">  <span class="keyword">this</span>.dx = moveDiv.offsetLeft;</span><br><span class="line">  <span class="keyword">this</span>.dy = moveDiv.offsetTop;</span><br><span class="line">&#125;,</span><br><span class="line">preHandler:<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;</span><br><span class="line">  e.preventDefault();</span><br><span class="line">&#125;,</span><br><span class="line">move()&#123;</span><br><span class="line"></span><br><span class="line">  <span class="built_in">console</span>.log(<span class="string">'move'</span>);</span><br><span class="line">  <span class="keyword">if</span>(<span class="keyword">this</span>.flags)&#123;</span><br><span class="line">    <span class="keyword">var</span> touch ;</span><br><span class="line">    <span class="keyword">if</span>(event.touches)&#123;</span><br><span class="line">        touch = event.touches[<span class="number">0</span>];</span><br><span class="line">    &#125;<span class="keyword">else</span> &#123;</span><br><span class="line">        touch = event;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">this</span>.nx = touch.clientX - <span class="keyword">this</span>.position.x;</span><br><span class="line">    <span class="keyword">this</span>.ny = touch.clientY - <span class="keyword">this</span>.position.y;</span><br><span class="line">    <span class="keyword">this</span>.xPum = <span class="keyword">this</span>.dx+<span class="keyword">this</span>.nx;</span><br><span class="line">    <span class="keyword">this</span>.yPum = <span class="keyword">this</span>.dy+<span class="keyword">this</span>.ny;</span><br><span class="line">    moveDiv.style.left = <span class="keyword">this</span>.xPum+<span class="string">"px"</span>;</span><br><span class="line">    moveDiv.style.top = <span class="keyword">this</span>.yPum +<span class="string">"px"</span>;</span><br><span class="line">    <span class="comment">//阻止页面的滑动默认事件</span></span><br><span class="line">    <span class="built_in">document</span>.addEventListener(<span class="string">"touchmove"</span>,<span class="keyword">this</span>.preHandler,<span class="literal">false</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;,</span><br><span class="line"></span><br><span class="line">end()&#123;</span><br><span class="line"></span><br><span class="line">  <span class="built_in">console</span>.log(<span class="string">'end'</span>);</span><br><span class="line">  <span class="comment">//alert(e3);</span></span><br><span class="line">    <span class="keyword">this</span>.flags = <span class="literal">false</span>;</span><br><span class="line">    <span class="built_in">document</span>.removeEventListener(<span class="string">'touchmove'</span>, <span class="keyword">this</span>.preHandler, <span class="literal">false</span>);</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h3 id="CSS"><a href="#CSS" class="headerlink" title="CSS"></a>CSS</h3><figure class="highlight less"><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="selector-class">.detail</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: relative;</span><br><span class="line">  <span class="attribute">min-height</span>:<span class="number">100%</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.home</span>&#123;</span><br><span class="line">  <span class="attribute">position</span>:fixed;</span><br><span class="line">  <span class="attribute">right</span>:.<span class="number">2rem</span>;</span><br><span class="line">  <span class="attribute">bottom</span>:<span class="number">15%</span>;</span><br><span class="line">  <span class="attribute">line-height</span>:<span class="number">1rem</span>;</span><br><span class="line">  <span class="attribute">width</span>:.<span class="number">98rem</span>;</span><br><span class="line">  <span class="attribute">height</span>:.<span class="number">98rem</span>;</span><br><span class="line">  <span class="selector-tag">img</span>&#123;</span><br><span class="line">    <span class="attribute">width</span>:.<span class="number">98rem</span>;</span><br><span class="line">    <span class="attribute">height</span>:.<span class="number">98rem</span>;</span><br><span class="line">  &#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt; 最近在做一个混合开发的项目，需求里面要求使用拖拽，然而这不是jq的拖拽；我向很多大佬求助过，有一位大佬建议我去使用&lt;a href=&quot;https://www.cnblogs.com/qianduanjingying/p/5812139.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hammer.js&lt;/a&gt;;由于时间紧迫我不得不放弃这一方法。还有大佬向我推荐vue封装的插件，然而我试了一下有局限性，position:absolute==&amp;gt;我想要是的fixed；还有通过指令的方法等等我都试了不好用；求人不如求己下面我将为大家介绍一种简单的方法（适用于vue）
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Vue" scheme="https://lee.js.org/tags/Vue/"/>
    
      <category term="Mobileterminal" scheme="https://lee.js.org/tags/Mobileterminal/"/>
    
      <category term="Drag" scheme="https://lee.js.org/tags/Drag/"/>
    
  </entry>
  
  <entry>
    <title>移动端键盘弹起，底部按钮顶上去另类解决办法(Vue)</title>
    <link href="https://lee.js.org/2018/07/17/Vue%E9%94%AE%E7%9B%98%E5%BC%B9%E8%B5%B7/"/>
    <id>https://lee.js.org/2018/07/17/Vue键盘弹起/</id>
    <published>2018-07-17T07:12:43.000Z</published>
    <updated>2019-03-08T04:04:40.481Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>当我们写一个页面有键盘弹起且底部按钮fixed时你会发现点击输入框是底部按钮会弹起，网上很多方法但是只适用于对应的场景,今天我们来学习一种Vue 页面的键盘弹起。<a id="more"></a></p><p><img src="/img/07.png" alt="phone"></p><p>解决办法：<br>换个思路，检测浏览器的resize事件，当高度过小时就可以判定为出现这种情况，这时把定位改成ab或者直接隐藏掉之类的。</p><h2 id="方法一"><a href="#方法一" class="headerlink" title="方法一"></a>方法一</h2><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">&lt;mt-button v-show=<span class="string">"isOriginHei"</span> <span class="class"><span class="keyword">class</span></span>=<span class="string">"add-client"</span> type=<span class="string">"default"</span> size=<span class="string">"large"</span> @click.native=<span class="string">"submitClientInfo"</span>&gt;<span class="xml"><span class="tag">&lt;<span class="name">icon-svg</span> <span class="attr">iconClass</span>=<span class="string">"baocun"</span> <span class="attr">class</span>=<span class="string">"icon-xinzeng"</span>&gt;</span><span class="tag">&lt;/<span class="name">icon-svg</span>&gt;</span>提交<span class="tag">&lt;/<span class="name">mt-button</span>&gt;</span></span></span><br></pre></td></tr></table></figure><h3 id="第一步：-先在-data-中去-定义-一个记录高度是-属性"><a href="#第一步：-先在-data-中去-定义-一个记录高度是-属性" class="headerlink" title="第一步： 先在 data 中去 定义 一个记录高度是 属性"></a>第一步： 先在 data 中去 定义 一个记录高度是 属性</h3><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">data: &#123;</span><br><span class="line">    screenHeight: <span class="built_in">document</span>.body.clientHeight<span class="comment">// 这里是给到了一个默认值 （这个很重要），</span></span><br><span class="line">    originHeight: <span class="built_in">document</span>.body.clientHeight<span class="comment">//默认高度在watch里拿来做比较</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="第二步：-我们需要-讲-reisze-事件在-vue-mounted-的时候-去挂载一下它的方法"><a href="#第二步：-我们需要-讲-reisze-事件在-vue-mounted-的时候-去挂载一下它的方法" class="headerlink" title="第二步： 我们需要 讲 reisze 事件在 vue mounted 的时候 去挂载一下它的方法"></a>第二步： 我们需要 讲 reisze 事件在 vue mounted 的时候 去挂载一下它的方法</h3><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></pre></td><td class="code"><pre><span class="line">mounted () &#123;</span><br><span class="line">            <span class="keyword">const</span> that = <span class="keyword">this</span></span><br><span class="line">            <span class="built_in">window</span>.onresize = <span class="function"><span class="params">()</span> =&gt;</span> &#123;</span><br><span class="line">                <span class="keyword">return</span> <span class="function">(<span class="params">(</span>) =&gt;</span> &#123;</span><br><span class="line">                    <span class="built_in">window</span>.screenHeight= <span class="built_in">document</span>.body.clientHeight</span><br><span class="line">                    that.screenHeight= <span class="built_in">window</span>.screenHeight</span><br><span class="line">                &#125;)()</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br></pre></td></tr></table></figure><h3 id="第三步：-watch-去监听这个-属性值的变化，如果发生变化则讲这个val-传递给-this-screenHeight"><a href="#第三步：-watch-去监听这个-属性值的变化，如果发生变化则讲这个val-传递给-this-screenHeight" class="headerlink" title="第三步： watch 去监听这个 属性值的变化，如果发生变化则讲这个val 传递给 this.screenHeight"></a>第三步： watch 去监听这个 属性值的变化，如果发生变化则讲这个val 传递给 this.screenHeight</h3><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></pre></td><td class="code"><pre><span class="line">watch: &#123;</span><br><span class="line">            screenHeight(val) &#123;</span><br><span class="line">                <span class="keyword">this</span>.screenHeight= val</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br></pre></td></tr></table></figure><h3 id="watch监控比较，判断按钮是否该显示出来"><a href="#watch监控比较，判断按钮是否该显示出来" class="headerlink" title="watch监控比较，判断按钮是否该显示出来"></a>watch监控比较，判断按钮是否该显示出来</h3><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></pre></td><td class="code"><pre><span class="line">watch: &#123;</span><br><span class="line">            screenHeight (val) &#123;</span><br><span class="line">                <span class="keyword">if</span>(<span class="keyword">this</span>.originHeight != val) &#123;</span><br><span class="line">                    <span class="keyword">this</span>.isOriginHei = <span class="literal">false</span>;</span><br><span class="line">                &#125;<span class="keyword">else</span>&#123;</span><br><span class="line">                    <span class="keyword">this</span>.isOriginHei = <span class="literal">true</span>;</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br></pre></td></tr></table></figure><h2 id="方法二"><a href="#方法二" class="headerlink" title="方法二"></a>方法二</h2><h3 id="步骤一：定义一个指令-foot"><a href="#步骤一：定义一个指令-foot" class="headerlink" title="步骤一：定义一个指令 foot"></a>步骤一：定义一个指令 foot</h3><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><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">let</span> listenAction;</span><br><span class="line"><span class="keyword">let</span> originalHeight;</span><br><span class="line"><span class="keyword">let</span> currHeight;</span><br><span class="line"><span class="keyword">export</span> <span class="keyword">default</span> <span class="keyword">new</span> <span class="built_in">Object</span>().install = <span class="function">(<span class="params">Vue, options = &#123;&#125;</span>) =&gt;</span> &#123;</span><br><span class="line">  Vue.directive(<span class="string">'foot'</span>, &#123;</span><br><span class="line">    insert(el, binding) &#123;</span><br><span class="line">      <span class="keyword">const</span> elStyle = el.style;</span><br><span class="line">      <span class="keyword">let</span> active = <span class="literal">false</span>;</span><br><span class="line">      originalHeight = <span class="built_in">document</span>.body.clientHeight;</span><br><span class="line">      <span class="keyword">const</span> reset = <span class="function"><span class="params">()</span> =&gt;</span> &#123;</span><br><span class="line">        <span class="keyword">if</span>(!active) &#123;</span><br><span class="line">          <span class="keyword">return</span> ;</span><br><span class="line">        &#125;</span><br><span class="line">        elStyle.display = <span class="string">'flex'</span>;</span><br><span class="line">        active = <span class="literal">false</span>;</span><br><span class="line">      &#125;</span><br><span class="line">      <span class="keyword">const</span> hang = <span class="function"><span class="params">()</span> =&gt;</span> &#123;</span><br><span class="line">        <span class="keyword">if</span>(active) &#123;</span><br><span class="line">          <span class="keyword">return</span> ;</span><br><span class="line">        &#125;</span><br><span class="line">        elStyle.display = <span class="string">'none'</span></span><br><span class="line">        active = <span class="literal">true</span>;</span><br><span class="line">      &#125;</span><br><span class="line">      <span class="keyword">const</span> getCurrHeight = <span class="function"><span class="params">()</span> =&gt;</span> &#123;</span><br><span class="line">        <span class="keyword">let</span> getHeight = <span class="built_in">document</span>.body.clientHeight;</span><br><span class="line">        <span class="keyword">return</span> getHeight;</span><br><span class="line">      &#125;</span><br><span class="line">      <span class="keyword">const</span> check = <span class="function"><span class="params">()</span> =&gt;</span> &#123;</span><br><span class="line">        currHeight = getCurrHeight();</span><br><span class="line">        <span class="keyword">if</span>(currHeight != originalHeight) &#123;</span><br><span class="line">          hang();</span><br><span class="line">        &#125;<span class="keyword">else</span> &#123;</span><br><span class="line">          reset();</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">      listenAction = <span class="function"><span class="params">()</span> =&gt;</span> &#123;</span><br><span class="line">        check()</span><br><span class="line">      &#125;</span><br><span class="line">      <span class="built_in">window</span>.addEventListener(<span class="string">'resize'</span>, listenAction);</span><br><span class="line">    &#125;,</span><br><span class="line">    unbind() &#123;</span><br><span class="line">      <span class="built_in">window</span>.removeEventListener(<span class="string">'resize'</span>,listenAction);</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;)</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="步骤二：组件引用"><a href="#步骤二：组件引用" class="headerlink" title="步骤二：组件引用"></a>步骤二：组件引用</h3><figure class="highlight js"><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">import</span> Foot <span class="keyword">from</span> <span class="string">'libs/foot'</span></span><br><span class="line">Vue.use(Foot)</span><br></pre></td></tr></table></figure><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><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">m-flex</span> <span class="attr">class</span>=<span class="string">"pay-group"</span> <span class="attr">v-foot</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">m-flex-item</span> <span class="attr">class</span>=<span class="string">"should-pay"</span>&gt;</span>应付金额：<span class="tag">&lt;<span class="name">span</span>&gt;</span>￥99<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;/<span class="name">m-flex-item</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">m-button</span> @<span class="attr">click</span>=<span class="string">"goPay"</span> <span class="attr">class</span>=<span class="string">"pay-btn"</span>&gt;</span>去支付<span class="tag">&lt;/<span class="name">m-button</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">m-flex</span>&gt;</span></span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;当我们写一个页面有键盘弹起且底部按钮fixed时你会发现点击输入框是底部按钮会弹起，网上很多方法但是只适用于对应的场景,今天我们来学习一种Vue 页面的键盘弹起。
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Vue" scheme="https://lee.js.org/tags/Vue/"/>
    
      <category term="Mobileterminal" scheme="https://lee.js.org/tags/Mobileterminal/"/>
    
      <category term="resize" scheme="https://lee.js.org/tags/resize/"/>
    
      <category term="absolute" scheme="https://lee.js.org/tags/absolute/"/>
    
  </entry>
  
  <entry>
    <title>从零开始小程序</title>
    <link href="https://lee.js.org/2018/07/13/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%B0%8F%E7%A8%8B%E5%BA%8F/"/>
    <id>https://lee.js.org/2018/07/13/从零开始小程序/</id>
    <published>2018-07-13T01:16:24.000Z</published>
    <updated>2019-03-08T04:04:39.659Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>随着技术的发展着2年微信小程序犹如一匹黑马迅速崛起，新的技术出现，我们为了不与时代脱轨学习小程序很有必要！<a id="more"></a></p><h2 id="开始学习"><a href="#开始学习" class="headerlink" title="开始学习"></a>开始学习</h2><h3 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h3><ul><li>IDE搭建</li><li>知识准备</li></ul><h3 id="从零开始"><a href="#从零开始" class="headerlink" title="从零开始"></a>从零开始</h3><ul><li>app.js</li><li>app.json</li><li>app.wxml</li><li>app.wxss</li></ul><h3 id="Hello-World"><a href="#Hello-World" class="headerlink" title="Hello World"></a>Hello World</h3><ul><li>创建程序实例</li><li>美化ActionBar</li><li>美化页面</li><li>配置首页</li></ul><h3 id="超级Hello-World"><a href="#超级Hello-World" class="headerlink" title="超级Hello World"></a>超级Hello World</h3><ul><li>事件绑定函数</li><li>更新界面数据</li></ul><h2 id="准备工作-1"><a href="#准备工作-1" class="headerlink" title="准备工作"></a>准备工作</h2><h3 id="IDE搭建"><a href="#IDE搭建" class="headerlink" title="IDE搭建"></a>IDE搭建</h3><p>就不多说了，没有内测码去下载个破解版吧，我用了一下，学习完全够了！<a href="https://github.com/gavinkwoe/weapp-ide-crack" target="_blank" rel="noopener">IDE破解版+安装教程</a></p><h3 id="知识准备"><a href="#知识准备" class="headerlink" title="知识准备"></a>知识准备</h3><p>JavaScrip还是要看看的，推荐教程 <a href="https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000" target="_blank" rel="noopener">廖雪峰大神的博客</a></p><p>HTML+CSS 大概知道是干啥的就行</p><h2 id="从零开始-1"><a href="#从零开始-1" class="headerlink" title="从零开始"></a>从零开始</h2><h3 id="微信小程序中就四种类型的文件"><a href="#微信小程序中就四种类型的文件" class="headerlink" title="微信小程序中就四种类型的文件"></a>微信小程序中就四种类型的文件</h3><ul><li>js ———- JavaScrip文件</li><li>json ——– 项目配置文件，负责窗口颜色等等</li><li>wxml ——- 类似HTML文件</li><li>wxss ——- 类似CSS文件</li></ul><p>在根目录下用app来命名的这四中类型的文件，就是程序入口文件</p><p><strong>app.json</strong></p><p>必须要有这个文件，如果没有这个文件，IDE会报错，因为微信框架把这个作为配置文件入口，<br>你只需创建这个文件，里面写个大括号就行<br>以后我们会在这里对整个小程序的全局配置。记录了页面组成，配置小程序的窗口 背景色，配置导航条样式，配置默认标题。</p><p><strong>app.js</strong></p><p>必须要有这个文件，没有也是会报错！但是这个文件创建一下就行 什么都不需要写<br>以后我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。</p><p><strong>app.wxss</strong></p><p>这个文件不是必须的。因为它只是个全局CSS样式文件</p><p><strong>app.wxml</strong></p><p>这个也不是必须的，而且这个并不是指主界面哦~因为小程序的主页面是靠在JSON文件中配置来决定的</p><p>有了这两个文件你运行程序，IDE就不会报错了，也意味着这是最简单的微信小程序</p><p><img src="/img/wx.png" alt="文件"></p><h2 id="Hello-World-1"><a href="#Hello-World-1" class="headerlink" title="Hello World"></a>Hello World</h2><h3 id="创建程序实例"><a href="#创建程序实例" class="headerlink" title="创建程序实例"></a>创建程序实例</h3><p>app.js文件管理整个程序的生命周期，所以在里面添加如下代码：（输入App IDE会有提示）</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></pre></td><td class="code"><pre><span class="line">App(&#123;</span><br><span class="line">  onLaunch: <span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="built_in">console</span>.log(<span class="string">'App Launch'</span>)</span><br><span class="line">  &#125;,</span><br><span class="line">  onShow: <span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="built_in">console</span>.log(<span class="string">'App Show'</span>)</span><br><span class="line">  &#125;,</span><br><span class="line">  onHide: <span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="built_in">console</span>.log(<span class="string">'App Hide'</span>)</span><br><span class="line">  &#125;</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure><p>具体API解释如下:</p><p><img src="/img/API.png" alt="API"></p><h3 id="美化ActionBar"><a href="#美化ActionBar" class="headerlink" title="美化ActionBar"></a>美化ActionBar</h3><p>json文件负责配置ActionBar颜色，我们只需要在里面添加如下代码即可，下图有参数说明！</p><p><img src="/img/meihau.png" alt="具体参数"></p><p><img src="/img/nav.png" alt="nav"></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></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">    <span class="attr">"window"</span>:&#123;</span><br><span class="line">        <span class="attr">"navigationBarBackgroundColor"</span>: <span class="string">"#BBDEF8"</span>,</span><br><span class="line">        <span class="attr">"navigationBarTitleText"</span>: <span class="string">"Demo"</span>,</span><br><span class="line">        <span class="attr">"navigationBarTextStyle"</span>:<span class="string">"white"</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="/img/header.png" alt="header"></p><p>现在看ActionBar是不是像那么回事了！好接下来我们继续写我们第一个界面</p><h3 id="美化页面"><a href="#美化页面" class="headerlink" title="美化页面"></a>美化页面</h3><p>美化页面我没用到了wxml和wxssw文件<br>为了程序代码结构简洁<br>我们需要在根目录下创建一个新文件夹 <strong>名字随意</strong>， 我们这里叫pages<br>然后在pages文件夹里面再创建新文件夹 <strong>名字随意</strong>, 这里我没叫index<br>然后我们创建index.wxml文件然后在里面写入以下代码：</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></pre></td><td class="code"><pre><span class="line">&lt;view&gt;</span><br><span class="line">    &lt;text class=&quot;window&quot;&gt;Hello&lt;/text&gt;</span><br><span class="line">&lt;/view&gt;</span><br></pre></td></tr></table></figure><p>然后创建index.wxss文件然后在里面写下以下代码</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></pre></td><td class="code"><pre><span class="line">.window&#123;</span><br><span class="line">    color:#4995fa;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>然后我们创建 index.js<br>在文件中输入如下代码（输入Page IDE会有提示）</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></pre></td><td class="code"><pre><span class="line">Page(&#123;</span><br><span class="line">  data:&#123;</span><br><span class="line">    <span class="comment">// text:"这是一个页面"</span></span><br><span class="line">  &#125;,</span><br><span class="line">  onLoad:<span class="function"><span class="keyword">function</span>(<span class="params">options</span>)</span>&#123;</span><br><span class="line">    <span class="comment">// 页面初始化 options为页面跳转所带来的参数</span></span><br><span class="line">  &#125;,</span><br><span class="line">  onReady:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">    <span class="comment">// 页面渲染完成</span></span><br><span class="line">  &#125;,</span><br><span class="line">  onShow:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">    <span class="comment">// 页面显示</span></span><br><span class="line">  &#125;,</span><br><span class="line">  onHide:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">    <span class="comment">// 页面隐藏</span></span><br><span class="line">  &#125;,</span><br><span class="line">  onUnload:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">    <span class="comment">// 页面关闭</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure><p>函数解释如下：<br><img src="/img/02.png" alt="page参数"></p><h3 id="配置首页"><a href="#配置首页" class="headerlink" title="配置首页"></a>配置首页</h3><p>Json文件负责配置页面路径所以我们在里面加入如下代码 其中index的含义 其实就是指index.js文件这里需要说明一点 pages 里面的路径其实是指向js文件的 如果一个目录下没有该名称的js文件是会报错的！<br><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">"pages":[ "pages/index/index"],</span><br></pre></td></tr></table></figure></p><p>完成了！我们来运行程序！</p><h2 id="超级Hello-World-1"><a href="#超级Hello-World-1" class="headerlink" title="超级Hello World"></a>超级Hello World</h2><p>为了学习事件绑定，以及如何将数据在页面上更新我们来做个超级Hello World，就是我点击文字，能让它变色！</p><h3 id="绑定事件"><a href="#绑定事件" class="headerlink" title="绑定事件"></a>绑定事件</h3><p>我们打开index.wxml 将里面代码改成这样<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">view</span>&gt;</span> <span class="tag">&lt;<span class="name">text</span> <span class="attr">catchtap</span>=<span class="string">"click"</span> <span class="attr">class</span>=<span class="string">"window"</span>&gt;</span>Hello<span class="tag">&lt;/<span class="name">text</span>&gt;</span><span class="tag">&lt;/<span class="name">view</span>&gt;</span></span><br></pre></td></tr></table></figure></p><p>其实也就是加了：<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">catchtap="click"//bindtap='click'</span><br></pre></td></tr></table></figure></p><p>这两个属性是什么意思呢 别着急 我会一一解释</p><p><img src="/img/03.png" alt="tap"></p><p>上图展示了事件的一些的属性名称，这里需要注意红框标注起来的内容，区分出冒泡事件和非冒泡事件，其实冒泡事件就是需要往上面一层容器传递这个事件</p><p>看了这图 我们再来看 catchtap=”click” 的含义catch 代表非冒泡事件tap 代表点击事件所以连在一起就是非冒泡点击事件那后面那个click是啥click 其实只是个变量名字我们在index.js需要用这个名字绑定接收事件的函数我们打开index.js然后添加如下函数<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">click:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123; <span class="built_in">console</span>.log(<span class="string">"点击了文字"</span>); &#125;</span><br></pre></td></tr></table></figure></p><p>,添加完后代码长这样 红框中就是 添加的这个代码</p><p><img src="/img/04.png" alt="tap"></p><p>所以其实点击事件的回调函数 就是 catchtap=”click” 中的 click 后面加上 :function() 构成的现在我们来运行程序试试 然后点击文字</p><p><img src="/img/05.png" alt="tap"><br>看是不是调用了click:function 并打印 点击了文字</p><p>好接下来我们写点击一下变色的逻辑那如何让一个文字变色呢，当然是css所以我们需要再index.wxss 中添加一个样式</p><figure class="highlight css"><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="selector-class">.window-red</span>&#123; <span class="attribute">color</span>:<span class="number">#D23933</span>;&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.window</span>&#123;<span class="attribute">color</span>:<span class="number">#49bb16</span>;&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.window-red</span>&#123;<span class="attribute">color</span>:<span class="number">#D23933</span>;&#125;</span><br></pre></td></tr></table></figure><p>然后我们进入index.js文件你会发现代码里面有个 data:{} 它不是page生命周期函数其实他是个变量的数组，这个里面申请的变量都可以在 wxml中使用<br><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">data:&#123;</span><br><span class="line">  color:<span class="string">"window"</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p><p>color的值就是index.wxss中的样式名称然后进入index.wxml中,将class中的值改成 <br><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">view</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">text</span> <span class="attr">catchtap</span>=<span class="string">'click'</span> <span class="attr">class</span>=<span class="string">"&#123;&#123;color&#125;&#125;"</span>&gt;</span>Hello<span class="tag">&lt;/<span class="name">text</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">view</span>&gt;</span></span><br></pre></td></tr></table></figure></p><p>其实意思就是 将js文件中变量 color的值在这里使用也就是值等于 window然后我们再回到index.js文件在最上面申请一个变量控制点击然后在click:function() 函数中添加如下代码:<br><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></pre></td><td class="code"><pre><span class="line">click:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">  <span class="built_in">console</span>.log(<span class="string">"点击了文字"</span>);</span><br><span class="line">  <span class="keyword">if</span>(flag)&#123;</span><br><span class="line">    color = <span class="string">"window-red"</span>; flag = <span class="literal">false</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">else</span>&#123;</span><br><span class="line">    color = <span class="string">"window"</span>; flag = <span class="literal">true</span>;</span><br><span class="line">  &#125;</span><br><span class="line">   <span class="keyword">this</span>.setData(&#123; color &#125;);</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure></p><p>完后的代码如图:<br><img src="/img/06.png" alt="tap"></p><p>其实就是在点击是后 更换color变量的值 而更换的这个值其实就是样式的名称</p><h3 id="更新界面数据"><a href="#更新界面数据" class="headerlink" title="更新界面数据"></a>更新界面数据</h3><p>这里有个问题 我们更换完值 但是在wxml中不会立即生效所以我们需要调用this.setData()方法将值同步给wxml 让它立即生效</p><p>好了我们运行程序 点击Hello 看看是不是点一下 变一下颜色！</p><p><img src="/img/07.gif" alt="tips"></p><p>最后再补充一点 index目录下也是可以配置 json文件的也就是每个页面都可以配置自己独特的actionbar颜色等等这里的配置会覆盖 app.json文件的配置</p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;随着技术的发展着2年微信小程序犹如一匹黑马迅速崛起，新的技术出现，我们为了不与时代脱轨学习小程序很有必要！
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Mini-apps" scheme="https://lee.js.org/tags/Mini-apps/"/>
    
  </entry>
  
  <entry>
    <title>Echarts属性设置</title>
    <link href="https://lee.js.org/2018/07/12/Echarts%E5%B1%9E%E6%80%A7%E8%AE%BE%E7%BD%AE/"/>
    <id>https://lee.js.org/2018/07/12/Echarts属性设置/</id>
    <published>2018-07-12T09:53:47.000Z</published>
    <updated>2019-03-08T04:05:24.966Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>Echarts:</p><ul><li>千万级数据可视化渲染能力</li><li>SVG + Canvas 双引擎动力更佳</li><li>数据样式分离及扁平配置让开发更便捷</li><li>首创无障碍访问支持</li><li>微信小程序、PPT，哪里都能用<a id="more"></a></li></ul><h2 id="全图默认背景"><a href="#全图默认背景" class="headerlink" title="全图默认背景"></a>全图默认背景</h2><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">backgroundColor: ‘rgba(<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>)’,</span><br></pre></td></tr></table></figure><h2 id="默认色板"><a href="#默认色板" class="headerlink" title="默认色板"></a>默认色板</h2><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">color: [<span class="string">'#ff7f50'</span>,<span class="string">'#87cefa'</span>,<span class="string">'#da70d6'</span>,<span class="string">'#32cd32'</span>,<span class="string">'#6495ed'</span>,</span><br><span class="line">    <span class="string">'#ff69b4'</span>,<span class="string">'#ba55d3'</span>,<span class="string">'#cd5c5c'</span>,<span class="string">'#ffa500'</span>,<span class="string">'#40e0d0'</span>,</span><br><span class="line">    <span class="string">'#1e90ff'</span>,<span class="string">'#ff6347'</span>,<span class="string">'#7b68ee'</span>,<span class="string">'#00fa9a'</span>,<span class="string">'#ffd700'</span>,</span><br><span class="line">    <span class="string">'#6699FF'</span>,<span class="string">'#ff6666'</span>,<span class="string">'#3cb371'</span>,<span class="string">'#b8860b'</span>,<span class="string">'#30e0e0'</span>],</span><br></pre></td></tr></table></figure><h2 id="图表标题"><a href="#图表标题" class="headerlink" title="图表标题"></a>图表标题</h2><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></pre></td><td class="code"><pre><span class="line">title: &#123;</span><br><span class="line">    x: <span class="string">'left'</span>,                <span class="comment">// 水平安放位置，默认为左对齐，可选为：</span></span><br><span class="line">                      <span class="comment">// 'center' ¦ 'left' ¦ 'right'</span></span><br><span class="line">                      <span class="comment">// ¦ &#123;number&#125;（x坐标，单位px）</span></span><br><span class="line">    y: <span class="string">'top'</span>,             <span class="comment">// 垂直安放位置，默认为全图顶端，可选为：</span></span><br><span class="line">                      <span class="comment">// 'top' ¦ 'bottom' ¦ 'center'</span></span><br><span class="line">                      <span class="comment">// ¦ &#123;number&#125;（y坐标，单位px）</span></span><br><span class="line">    <span class="comment">//textAlign: null          // 水平对齐方式，默认根据x设置自动调整</span></span><br><span class="line">    backgroundColor: <span class="string">'rgba(0,0,0,0)'</span>,</span><br><span class="line">    borderColor: <span class="string">'#ccc'</span>,          <span class="comment">// 标题边框颜色</span></span><br><span class="line">    borderWidth: <span class="number">0</span>,           <span class="comment">// 标题边框线宽，单位px，默认为0（无边框）</span></span><br><span class="line">    padding: <span class="number">5</span>,             <span class="comment">// 标题内边距，单位px，默认各方向内边距为5，</span></span><br><span class="line">                              <span class="comment">// 接受数组分别设定上右下左边距，同css</span></span><br><span class="line">    itemGap: <span class="number">10</span>,             <span class="comment">// 主副标题纵向间隔，单位px，默认为10，</span></span><br><span class="line">    textStyle: &#123;</span><br><span class="line">        fontSize: <span class="number">18</span>,</span><br><span class="line">        fontWeight: <span class="string">'bolder'</span>,</span><br><span class="line">        color: <span class="string">'#333'</span>                             <span class="comment">// 主标题文字颜色</span></span><br><span class="line">    &#125;,</span><br><span class="line">    subtextStyle: &#123;</span><br><span class="line">        color: <span class="string">'#aaa'</span>                            <span class="comment">// 副标题文字颜色</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="图例"><a href="#图例" class="headerlink" title="图例"></a>图例</h2><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></pre></td><td class="code"><pre><span class="line">legend: &#123;</span><br><span class="line">    orient: <span class="string">'horizontal'</span>,          <span class="comment">// 布局方式，默认为水平布局，可选为：</span></span><br><span class="line">                       <span class="comment">// 'horizontal' ¦ 'vertical'</span></span><br><span class="line">    x: <span class="string">'center'</span>,                <span class="comment">// 水平安放位置，默认为全图居中，可选为：</span></span><br><span class="line">                              <span class="comment">// 'center' ¦ 'left' ¦ 'right'</span></span><br><span class="line">                       <span class="comment">// ¦ &#123;number&#125;（x坐标，单位px）</span></span><br><span class="line">    y: <span class="string">'top'</span>,              <span class="comment">// 垂直安放位置，默认为全图顶端，可选为：</span></span><br><span class="line">                       <span class="comment">// 'top' ¦ 'bottom' ¦ 'center'</span></span><br><span class="line">                       <span class="comment">// ¦ &#123;number&#125;（y坐标，单位px）</span></span><br><span class="line">    backgroundColor: <span class="string">'rgba(0,0,0,0)'</span>,</span><br><span class="line">    borderColor: <span class="string">'#ccc'</span>,            <span class="comment">// 图例边框颜色</span></span><br><span class="line">    borderWidth: <span class="number">0</span>,                <span class="comment">// 图例边框线宽，单位px，默认为0（无边框）</span></span><br><span class="line">    padding: <span class="number">5</span>,                  <span class="comment">// 图例内边距，单位px，默认各方向内边距为5，</span></span><br><span class="line">                               <span class="comment">// 接受数组分别设定上右下左边距，同css</span></span><br><span class="line">    itemGap: <span class="number">10</span>,              <span class="comment">// 各个item之间的间隔，单位px，默认为10，</span></span><br><span class="line">                        <span class="comment">// 横向布局时为水平间隔，纵向布局时为纵向间隔</span></span><br><span class="line">    itemWidth: <span class="number">20</span>,             <span class="comment">// 图例图形宽度</span></span><br><span class="line">    itemHeight: <span class="number">14</span>,            <span class="comment">// 图例图形高度</span></span><br><span class="line">    textStyle: &#123;</span><br><span class="line">        color: <span class="string">'#333'</span>                              <span class="comment">// 图例文字颜色</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="值域"><a href="#值域" class="headerlink" title="值域"></a>值域</h2><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><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">dataRange: &#123;</span><br><span class="line">    orient: <span class="string">'vertical'</span>,             <span class="comment">// 布局方式，默认为垂直布局，可选为：</span></span><br><span class="line">                        <span class="comment">// 'horizontal' ¦ 'vertical'</span></span><br><span class="line">    x: <span class="string">'left'</span>,                   <span class="comment">// 水平安放位置，默认为全图左对齐，可选为：</span></span><br><span class="line">                        <span class="comment">// 'center' ¦ 'left' ¦ 'right'</span></span><br><span class="line">                        <span class="comment">// ¦ &#123;number&#125;（x坐标，单位px）</span></span><br><span class="line">    y: <span class="string">'bottom'</span>,                  <span class="comment">// 垂直安放位置，默认为全图底部，可选为：</span></span><br><span class="line">                         <span class="comment">// 'top' ¦ 'bottom' ¦ 'center'</span></span><br><span class="line">                         <span class="comment">// ¦ &#123;number&#125;（y坐标，单位px）</span></span><br><span class="line">    backgroundColor: <span class="string">'rgba(0,0,0,0)'</span>,</span><br><span class="line">    borderColor: <span class="string">'#ccc'</span>,             <span class="comment">// 值域边框颜色</span></span><br><span class="line">    borderWidth: <span class="number">0</span>,                 <span class="comment">// 值域边框线宽，单位px，默认为0（无边框）</span></span><br><span class="line">    padding: <span class="number">5</span>,                    <span class="comment">// 值域内边距，单位px，默认各方向内边距为5，</span></span><br><span class="line">                         <span class="comment">// 接受数组分别设定上右下左边距，同css</span></span><br><span class="line">    itemGap: <span class="number">10</span>,               <span class="comment">// 各个item之间的间隔，单位px，默认为10，</span></span><br><span class="line">                        <span class="comment">// 横向布局时为水平间隔，纵向布局时为纵向间隔</span></span><br><span class="line">    itemWidth: <span class="number">20</span>,             <span class="comment">// 值域图形宽度，线性渐变水平布局宽度为该值 * 10</span></span><br><span class="line">    itemHeight: <span class="number">14</span>,            <span class="comment">// 值域图形高度，线性渐变垂直布局高度为该值 * 10</span></span><br><span class="line">    splitNumber: <span class="number">5</span>,            <span class="comment">// 分割段数，默认为5，为0时为线性渐变</span></span><br><span class="line">    color:[<span class="string">'#1e90ff'</span>,<span class="string">'#f0ffff'</span>],<span class="comment">//颜色</span></span><br><span class="line">    <span class="comment">//text:['高','低'],              // 文本，默认为数值文本</span></span><br><span class="line">    textStyle: &#123;</span><br><span class="line">        color: <span class="string">'#333'</span>                                <span class="comment">// 值域文字颜色</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="工具箱"><a href="#工具箱" class="headerlink" title="工具箱"></a>工具箱</h2><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><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></pre></td><td class="code"><pre><span class="line">toolbox: &#123;</span><br><span class="line">    orient: <span class="string">'horizontal'</span>,            <span class="comment">// 布局方式，默认为水平布局，可选为：</span></span><br><span class="line">                        <span class="comment">// 'horizontal' ¦ 'vertical'</span></span><br><span class="line">    x: <span class="string">'right'</span>,              <span class="comment">// 水平安放位置，默认为全图右对齐，可选为：</span></span><br><span class="line">                        <span class="comment">// 'center' ¦ 'left' ¦ 'right'</span></span><br><span class="line">                        <span class="comment">// ¦ &#123;number&#125;（x坐标，单位px）</span></span><br><span class="line">    y: <span class="string">'top'</span>,               <span class="comment">// 垂直安放位置，默认为全图顶端，可选为：</span></span><br><span class="line">                        <span class="comment">// 'top' ¦ 'bottom' ¦ 'center'</span></span><br><span class="line">                        <span class="comment">// ¦ &#123;number&#125;（y坐标，单位px）</span></span><br><span class="line">    color : [<span class="string">'#1e90ff'</span>,<span class="string">'#22bb22'</span>,<span class="string">'#4b0082'</span>,<span class="string">'#d2691e'</span>],</span><br><span class="line">    backgroundColor: <span class="string">'rgba(0,0,0,0)'</span>,    <span class="comment">// 工具箱背景颜色</span></span><br><span class="line">    borderColor: <span class="string">'#ccc'</span>,             <span class="comment">// 工具箱边框颜色</span></span><br><span class="line">    borderWidth: <span class="number">0</span>,                 <span class="comment">// 工具箱边框线宽，单位px，默认为0（无边框）</span></span><br><span class="line">    padding: <span class="number">5</span>,                    <span class="comment">// 工具箱内边距，单位px，默认各方向内边距为5，</span></span><br><span class="line">                                <span class="comment">// 接受数组分别设定上右下左边距，同css</span></span><br><span class="line">    itemGap: <span class="number">10</span>,                  <span class="comment">// 各个item之间的间隔，单位px，默认为10，</span></span><br><span class="line">                                <span class="comment">// 横向布局时为水平间隔，纵向布局时为纵向间隔</span></span><br><span class="line">    itemSize: <span class="number">16</span>,              <span class="comment">// 工具箱图形宽度</span></span><br><span class="line">    featureImageIcon : &#123;&#125;,            <span class="comment">// 自定义图片icon</span></span><br><span class="line">    featureTitle : &#123;</span><br><span class="line">        mark : <span class="string">'辅助线开关'</span>,</span><br><span class="line">        markUndo : <span class="string">'删除辅助线'</span>,</span><br><span class="line">        markClear : <span class="string">'清空辅助线'</span>,</span><br><span class="line">        dataZoom : <span class="string">'区域缩放'</span>,</span><br><span class="line">        dataZoomReset : <span class="string">'区域缩放后退'</span>,</span><br><span class="line">        dataView : <span class="string">'数据视图'</span>,</span><br><span class="line">        lineChart : <span class="string">'折线图切换'</span>,</span><br><span class="line">        barChart : <span class="string">'柱形图切换'</span>,</span><br><span class="line">        restore : <span class="string">'还原'</span>,</span><br><span class="line">        saveAsImage : <span class="string">'保存为图片'</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="提示框"><a href="#提示框" class="headerlink" title="提示框"></a>提示框</h2><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><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">tooltip: &#123;</span><br><span class="line">    trigger: <span class="string">'item'</span>,           <span class="comment">// 触发类型，默认数据触发，见下图，可选为：'item' ¦ 'axis'</span></span><br><span class="line">    showDelay: <span class="number">20</span>,             <span class="comment">// 显示延迟，添加显示延迟可以避免频繁切换，单位ms</span></span><br><span class="line">    hideDelay: <span class="number">100</span>,            <span class="comment">// 隐藏延迟，单位ms</span></span><br><span class="line">    transitionDuration : <span class="number">0.4</span>,         <span class="comment">// 动画变换时间，单位s</span></span><br><span class="line">    backgroundColor: <span class="string">'rgba(0,0,0,0.7)'</span>,  <span class="comment">// 提示背景颜色，默认为透明度为0.7的黑色</span></span><br><span class="line">    borderColor: <span class="string">'#333'</span>,            <span class="comment">// 提示边框颜色</span></span><br><span class="line">    borderRadius: <span class="number">4</span>,                <span class="comment">// 提示边框圆角，单位px，默认为4</span></span><br><span class="line">    borderWidth: <span class="number">0</span>,                <span class="comment">// 提示边框线宽，单位px，默认为0（无边框）</span></span><br><span class="line">    padding: <span class="number">5</span>,                   <span class="comment">// 提示内边距，单位px，默认各方向内边距为5，</span></span><br><span class="line">                                <span class="comment">// 接受数组分别设定上右下左边距，同css</span></span><br><span class="line">    axisPointer : &#123;                 <span class="comment">// 坐标轴指示器，坐标轴触发有效</span></span><br><span class="line">        type : <span class="string">'line'</span>,         <span class="comment">// 默认为直线，可选为：'line' | 'shadow'</span></span><br><span class="line">        lineStyle : &#123;          <span class="comment">// 直线指示器样式设置</span></span><br><span class="line">            color: <span class="string">'#48b'</span>,</span><br><span class="line">            width: <span class="number">2</span>,</span><br><span class="line">            type: <span class="string">'solid'</span></span><br><span class="line">        &#125;,</span><br><span class="line">        shadowStyle : &#123;              <span class="comment">// 阴影指示器样式设置</span></span><br><span class="line">            width: <span class="string">'auto'</span>,         <span class="comment">// 阴影大小</span></span><br><span class="line">            color: <span class="string">'rgba(150,150,150,0.3)'</span>  <span class="comment">// 阴影颜色</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    textStyle: &#123;</span><br><span class="line">        color: <span class="string">'#fff'</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="区域缩放控制器"><a href="#区域缩放控制器" class="headerlink" title="区域缩放控制器"></a>区域缩放控制器</h2><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></pre></td><td class="code"><pre><span class="line">dataZoom: &#123;</span><br><span class="line">    orient: <span class="string">'horizontal'</span>,         <span class="comment">// 布局方式，默认为水平布局，可选为：</span></span><br><span class="line">                             <span class="comment">// 'horizontal' ¦ 'vertical'</span></span><br><span class="line">    <span class="comment">// x: &#123;number&#125;,              // 水平安放位置，默认为根据grid参数适配，可选为：</span></span><br><span class="line">                             <span class="comment">// &#123;number&#125;（x坐标，单位px）</span></span><br><span class="line">    <span class="comment">// y: &#123;number&#125;,              // 垂直安放位置，默认为根据grid参数适配，可选为：</span></span><br><span class="line">                             <span class="comment">// &#123;number&#125;（y坐标，单位px）</span></span><br><span class="line">    <span class="comment">// width: &#123;number&#125;,           // 指定宽度，横向布局时默认为根据grid参数适配</span></span><br><span class="line">    <span class="comment">// height: &#123;number&#125;,          // 指定高度，纵向布局时默认为根据grid参数适配</span></span><br><span class="line">    backgroundColor: <span class="string">'rgba(0,0,0,0)'</span>,    <span class="comment">// 背景颜色</span></span><br><span class="line">    dataBackgroundColor: <span class="string">'#eee'</span>,       <span class="comment">// 数据背景颜色</span></span><br><span class="line">    fillerColor: <span class="string">'rgba(144,197,237,0.2)'</span>, <span class="comment">// 填充颜色</span></span><br><span class="line">    handleColor: <span class="string">'rgba(70,130,180,0.8)'</span>       <span class="comment">// 手柄颜色</span></span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="网格"><a href="#网格" class="headerlink" title="网格"></a>网格</h2><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></pre></td><td class="code"><pre><span class="line">grid: &#123;</span><br><span class="line">    x: <span class="number">80</span>,</span><br><span class="line">    y: <span class="number">60</span>,</span><br><span class="line">    x2: <span class="number">80</span>,</span><br><span class="line">    y2: <span class="number">60</span>,</span><br><span class="line">    <span class="comment">// width: &#123;totalWidth&#125; - x - x2,</span></span><br><span class="line">    <span class="comment">// height: &#123;totalHeight&#125; - y - y2,</span></span><br><span class="line">    backgroundColor: <span class="string">'rgba(0,0,0,0)'</span>,</span><br><span class="line">    borderWidth: <span class="number">1</span>,</span><br><span class="line">    borderColor: <span class="string">'#ccc'</span></span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="类目轴"><a href="#类目轴" class="headerlink" title="类目轴"></a>类目轴</h2><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><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></pre></td><td class="code"><pre><span class="line">categoryAxis: &#123;</span><br><span class="line">    position: <span class="string">'bottom'</span>,        <span class="comment">// 位置</span></span><br><span class="line">    nameLocation: <span class="string">'end'</span>,      <span class="comment">// 坐标轴名字位置，支持'start' | 'end'</span></span><br><span class="line">    boundaryGap: <span class="literal">true</span>,     <span class="comment">// 类目起始和结束两端空白策略</span></span><br><span class="line">    axisLine: &#123;            <span class="comment">// 坐标轴线</span></span><br><span class="line">        show: <span class="literal">true</span>,         <span class="comment">// 默认显示，属性show控制显示与否</span></span><br><span class="line">        lineStyle: &#123;        <span class="comment">// 属性lineStyle控制线条样式</span></span><br><span class="line">            color: <span class="string">'#48b'</span>,</span><br><span class="line">            width: <span class="number">2</span>,</span><br><span class="line">            type: <span class="string">'solid'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    axisTick: &#123;            <span class="comment">// 坐标轴小标记</span></span><br><span class="line">        show: <span class="literal">true</span>,       <span class="comment">// 属性show控制显示与否，默认不显示</span></span><br><span class="line">        interval: <span class="string">'auto'</span>,</span><br><span class="line">        <span class="comment">// onGap: null,</span></span><br><span class="line">        inside : <span class="literal">false</span>,        <span class="comment">// 控制小标记是否在grid里</span></span><br><span class="line">        length :<span class="number">5</span>,         <span class="comment">// 属性length控制线长</span></span><br><span class="line">        lineStyle: &#123;       <span class="comment">// 属性lineStyle控制线条样式</span></span><br><span class="line">            color: <span class="string">'#333'</span>,</span><br><span class="line">            width: <span class="number">1</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    axisLabel: &#123;           <span class="comment">// 坐标轴文本标签，详见axis.axisLabel</span></span><br><span class="line">        show: <span class="literal">true</span>,</span><br><span class="line">        interval: <span class="string">'auto'</span>,</span><br><span class="line">        rotate: <span class="number">0</span>,</span><br><span class="line">        margin: <span class="number">8</span>,</span><br><span class="line">        <span class="comment">// formatter: null,</span></span><br><span class="line">        textStyle: &#123;       <span class="comment">// 其余属性默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            color: <span class="string">'#333'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    splitLine: &#123;                <span class="comment">// 分隔线</span></span><br><span class="line">        show: <span class="literal">true</span>,        <span class="comment">// 默认显示，属性show控制显示与否</span></span><br><span class="line">        <span class="comment">// onGap: null,</span></span><br><span class="line">        lineStyle: &#123;       <span class="comment">// 属性lineStyle（详见lineStyle）控制线条样式</span></span><br><span class="line">            color: [<span class="string">'#ccc'</span>],</span><br><span class="line">            width: <span class="number">1</span>,</span><br><span class="line">            type: <span class="string">'solid'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    splitArea: &#123;                <span class="comment">// 分隔区域</span></span><br><span class="line">        show: <span class="literal">false</span>,       <span class="comment">// 默认不显示，属性show控制显示与否</span></span><br><span class="line">        <span class="comment">// onGap: null,</span></span><br><span class="line">        areaStyle: &#123;        <span class="comment">// 属性areaStyle（详见areaStyle）控制区域样式</span></span><br><span class="line">            color: [<span class="string">'rgba(250,250,250,0.3)'</span>,<span class="string">'rgba(200,200,200,0.3)'</span>]</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="数值型坐标轴默认参数"><a href="#数值型坐标轴默认参数" class="headerlink" title="数值型坐标轴默认参数"></a>数值型坐标轴默认参数</h2><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><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></pre></td><td class="code"><pre><span class="line">valueAxis: &#123;</span><br><span class="line">    position: <span class="string">'left'</span>,      <span class="comment">// 位置</span></span><br><span class="line">    nameLocation: <span class="string">'end'</span>,     <span class="comment">// 坐标轴名字位置，支持'start' | 'end'</span></span><br><span class="line">    nameTextStyle: &#123;&#125;,     <span class="comment">// 坐标轴文字样式，默认取全局样式</span></span><br><span class="line">    boundaryGap: [<span class="number">0</span>, <span class="number">0</span>],    <span class="comment">// 数值起始和结束两端空白策略</span></span><br><span class="line">    splitNumber: <span class="number">5</span>,        <span class="comment">// 分割段数，默认为5</span></span><br><span class="line">    axisLine: &#123;             <span class="comment">// 坐标轴线</span></span><br><span class="line">        show: <span class="literal">true</span>,      <span class="comment">// 默认显示，属性show控制显示与否</span></span><br><span class="line">        lineStyle: &#123;      <span class="comment">// 属性lineStyle控制线条样式</span></span><br><span class="line">            color: <span class="string">'#48b'</span>,</span><br><span class="line">            width: <span class="number">2</span>,</span><br><span class="line">            type: <span class="string">'solid'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    axisTick: &#123;            <span class="comment">// 坐标轴小标记</span></span><br><span class="line">        show: <span class="literal">false</span>,       <span class="comment">// 属性show控制显示与否，默认不显示</span></span><br><span class="line">        inside : <span class="literal">false</span>,      <span class="comment">// 控制小标记是否在grid里</span></span><br><span class="line">        length :<span class="number">5</span>,          <span class="comment">// 属性length控制线长</span></span><br><span class="line">        lineStyle: &#123;       <span class="comment">// 属性lineStyle控制线条样式</span></span><br><span class="line">            color: <span class="string">'#333'</span>,</span><br><span class="line">            width: <span class="number">1</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    axisLabel: &#123;           <span class="comment">// 坐标轴文本标签，详见axis.axisLabel</span></span><br><span class="line">        show: <span class="literal">true</span>,</span><br><span class="line">        rotate: <span class="number">0</span>,</span><br><span class="line">        margin: <span class="number">8</span>,</span><br><span class="line">        <span class="comment">// formatter: null,</span></span><br><span class="line">        textStyle: &#123;       <span class="comment">// 其余属性默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            color: <span class="string">'#333'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    splitLine: &#123;                <span class="comment">// 分隔线</span></span><br><span class="line">        show: <span class="literal">true</span>,        <span class="comment">// 默认显示，属性show控制显示与否</span></span><br><span class="line">        lineStyle: &#123;          <span class="comment">// 属性lineStyle（详见lineStyle）控制线条样式</span></span><br><span class="line">            color: [<span class="string">'#ccc'</span>],</span><br><span class="line">            width: <span class="number">1</span>,</span><br><span class="line">            type: <span class="string">'solid'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    splitArea: &#123;                <span class="comment">// 分隔区域</span></span><br><span class="line">        show: <span class="literal">false</span>,       <span class="comment">// 默认不显示，属性show控制显示与否</span></span><br><span class="line">        areaStyle: &#123;       <span class="comment">// 属性areaStyle（详见areaStyle）控制区域样式</span></span><br><span class="line">            color: [<span class="string">'rgba(250,250,250,0.3)'</span>,<span class="string">'rgba(200,200,200,0.3)'</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><br><span class="line"></span><br><span class="line">polar : &#123;</span><br><span class="line">    center : [<span class="string">'50%'</span>, <span class="string">'50%'</span>],    <span class="comment">// 默认全局居中</span></span><br><span class="line">    radius : <span class="string">'75%'</span>,</span><br><span class="line">    startAngle : <span class="number">90</span>,</span><br><span class="line">    splitNumber : <span class="number">5</span>,</span><br><span class="line">    name : &#123;</span><br><span class="line">        show: <span class="literal">true</span>,</span><br><span class="line">        textStyle: &#123;       <span class="comment">// 其余属性默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            color: <span class="string">'#333'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    axisLine: &#123;            <span class="comment">// 坐标轴线</span></span><br><span class="line">        show: <span class="literal">true</span>,         <span class="comment">// 默认显示，属性show控制显示与否</span></span><br><span class="line">        lineStyle: &#123;        <span class="comment">// 属性lineStyle控制线条样式</span></span><br><span class="line">            color: <span class="string">'#ccc'</span>,</span><br><span class="line">            width: <span class="number">1</span>,</span><br><span class="line">            type: <span class="string">'solid'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    axisLabel: &#123;                <span class="comment">// 坐标轴文本标签，详见axis.axisLabel</span></span><br><span class="line">        show: <span class="literal">false</span>,</span><br><span class="line">        textStyle: &#123;       <span class="comment">// 其余属性默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            color: <span class="string">'#333'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    splitArea : &#123;</span><br><span class="line">        show : <span class="literal">true</span>,</span><br><span class="line">        areaStyle : &#123;</span><br><span class="line">            color: [<span class="string">'rgba(250,250,250,0.3)'</span>,<span class="string">'rgba(200,200,200,0.3)'</span>]</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;,</span><br><span class="line">    splitLine : &#123;</span><br><span class="line">        show : <span class="literal">true</span>,</span><br><span class="line">        lineStyle : &#123;</span><br><span class="line">            width : <span class="number">1</span>,</span><br><span class="line">            color : <span class="string">'#ccc'</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="柱形图默认参数"><a href="#柱形图默认参数" class="headerlink" title="柱形图默认参数"></a>柱形图默认参数</h2><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><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></pre></td><td class="code"><pre><span class="line">bar: &#123;</span><br><span class="line">    barMinHeight: <span class="number">0</span>,            <span class="comment">// 最小高度改为0</span></span><br><span class="line">    <span class="comment">// barWidth: null,        // 默认自适应</span></span><br><span class="line">    barGap: <span class="string">'30%'</span>,           <span class="comment">// 柱间距离，默认为柱形宽度的30%，可设固定值</span></span><br><span class="line">    barCategoryGap : <span class="string">'20%'</span>,   <span class="comment">// 类目间柱形距离，默认为类目间距的20%，可设固定值</span></span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: '各异',</span></span><br><span class="line">            barBorderColor: <span class="string">'#fff'</span>,         <span class="comment">// 柱条边线</span></span><br><span class="line">            barBorderRadius: <span class="number">0</span>,            <span class="comment">// 柱条边线圆角，单位px，默认为0</span></span><br><span class="line">            barBorderWidth: <span class="number">1</span>,             <span class="comment">// 柱条边线线宽，单位px，默认为1</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                                         <span class="comment">// position: 默认自适应，水平布局为'top'，垂直布局为'right'，可选为</span></span><br><span class="line">                                         <span class="comment">// 'inside'|'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                                        <span class="comment">// textStyle: null // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: '各异',</span></span><br><span class="line">            barBorderColor: <span class="string">'rgba(0,0,0,0)'</span>,            <span class="comment">// 柱条边线</span></span><br><span class="line">            barBorderRadius: <span class="number">0</span>,                <span class="comment">// 柱条边线圆角，单位px，默认为0</span></span><br><span class="line">            barBorderWidth: <span class="number">1</span>,                     <span class="comment">// 柱条边线线宽，单位px，默认为1</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// position: 默认自适应，水平布局为'top'，垂直布局为'right'，可选为</span></span><br><span class="line">                <span class="comment">//           'inside'|'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</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></pre></td></tr></table></figure><h2 id="折线图默认参数"><a href="#折线图默认参数" class="headerlink" title="折线图默认参数"></a>折线图默认参数</h2><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><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></pre></td><td class="code"><pre><span class="line">line: &#123;</span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// position: 默认自适应，水平布局为'top'，垂直布局为'right'，可选为</span></span><br><span class="line">                <span class="comment">//           'inside'|'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;,</span><br><span class="line">            lineStyle: &#123;</span><br><span class="line">                width: <span class="number">2</span>,</span><br><span class="line">                type: <span class="string">'solid'</span>,</span><br><span class="line">                shadowColor : <span class="string">'rgba(0,0,0,0)'</span>, <span class="comment">//默认透明</span></span><br><span class="line">                shadowBlur: <span class="number">5</span>,</span><br><span class="line">                shadowOffsetX: <span class="number">3</span>,</span><br><span class="line">                shadowOffsetY: <span class="number">3</span></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// position: 默认自适应，水平布局为'top'，垂直布局为'right'，可选为</span></span><br><span class="line">                <span class="comment">//           'inside'|'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</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="comment">//smooth : false,</span></span><br><span class="line">    <span class="comment">//symbol: null,             // 拐点图形类型</span></span><br><span class="line">    symbolSize: <span class="number">2</span>,          <span class="comment">// 拐点图形大小</span></span><br><span class="line">    <span class="comment">//symbolRotate : null,       // 拐点图形旋转控制</span></span><br><span class="line">    showAllSymbol: <span class="literal">false</span>                   <span class="comment">// 标志图形默认只有主轴显示（随主轴标签间隔隐藏策略）</span></span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="K线图默认参数"><a href="#K线图默认参数" class="headerlink" title="K线图默认参数"></a>K线图默认参数</h2><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></pre></td><td class="code"><pre><span class="line">k: &#123;</span><br><span class="line">    <span class="comment">// barWidth : null              // 默认自适应</span></span><br><span class="line">    <span class="comment">// barMaxWidth : null           // 默认自适应</span></span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            color: <span class="string">'#fff'</span>,      <span class="comment">// 阳线填充颜色</span></span><br><span class="line">            color0: <span class="string">'#00aa11'</span>,  <span class="comment">// 阴线填充颜色</span></span><br><span class="line">            lineStyle: &#123;</span><br><span class="line">                width: <span class="number">1</span>,</span><br><span class="line">                color: <span class="string">'#ff3200'</span>,    <span class="comment">// 阳线边框颜色</span></span><br><span class="line">                color0: <span class="string">'#00aa11'</span>          <span class="comment">// 阴线边框颜色</span></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            <span class="comment">// color0: 各异</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="散点图默认参数"><a href="#散点图默认参数" class="headerlink" title="散点图默认参数"></a>散点图默认参数</h2><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><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">scatter: &#123;</span><br><span class="line">    <span class="comment">//symbol: null,         // 图形类型</span></span><br><span class="line">    symbolSize: <span class="number">4</span>,       <span class="comment">// 图形大小，半宽（半径）参数，当图形为方向或菱形则总宽度为symbolSize * 2</span></span><br><span class="line">    <span class="comment">//symbolRotate : null,   // 图形旋转控制</span></span><br><span class="line">    large: <span class="literal">false</span>,        <span class="comment">// 大规模散点图</span></span><br><span class="line">    largeThreshold: <span class="number">2000</span>,   <span class="comment">// 大规模阀值，large为true且数据量&gt;largeThreshold才启用大规模模式</span></span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// position: 默认自适应，水平布局为'top'，垂直布局为'right'，可选为</span></span><br><span class="line">                <span class="comment">//           'inside'|'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: '各异'</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// position: 默认自适应，水平布局为'top'，垂直布局为'right'，可选为</span></span><br><span class="line">                <span class="comment">//           'inside'|'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</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></pre></td></tr></table></figure><h2 id="雷达图默认参数"><a href="#雷达图默认参数" class="headerlink" title="雷达图默认参数"></a>雷达图默认参数</h2><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></pre></td><td class="code"><pre><span class="line">radar : &#123;</span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">            &#125;,</span><br><span class="line">            lineStyle: &#123;</span><br><span class="line">                width: <span class="number">2</span>,</span><br><span class="line">                type: <span class="string">'solid'</span></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</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="comment">//symbol: null,          // 拐点图形类型</span></span><br><span class="line">    symbolSize: <span class="number">2</span>          <span class="comment">// 可计算特性参数，空数据拖拽提示图形大小</span></span><br><span class="line">    <span class="comment">//symbolRotate : null,    // 图形旋转控制</span></span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="饼图默认参数"><a href="#饼图默认参数" class="headerlink" title="饼图默认参数"></a>饼图默认参数</h2><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><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></pre></td><td class="code"><pre><span class="line">pie: &#123;</span><br><span class="line">    center : [<span class="string">'50%'</span>, <span class="string">'50%'</span>],          <span class="comment">// 默认全局居中</span></span><br><span class="line">    radius : [<span class="number">0</span>, <span class="string">'75%'</span>],</span><br><span class="line">    clockWise : <span class="literal">false</span>,             <span class="comment">// 默认逆时针</span></span><br><span class="line">    startAngle: <span class="number">90</span>,</span><br><span class="line">    minAngle: <span class="number">0</span>,                 <span class="comment">// 最小角度改为0</span></span><br><span class="line">    selectedOffset: <span class="number">10</span>,         <span class="comment">// 选中是扇区偏移量</span></span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            borderColor: <span class="string">'#fff'</span>,</span><br><span class="line">            borderWidth: <span class="number">1</span>,</span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">true</span>,</span><br><span class="line">                position: <span class="string">'outer'</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;,</span><br><span class="line">            labelLine: &#123;</span><br><span class="line">                show: <span class="literal">true</span>,</span><br><span class="line">                length: <span class="number">20</span>,</span><br><span class="line">                lineStyle: &#123;</span><br><span class="line">                    <span class="comment">// color: 各异,</span></span><br><span class="line">                    width: <span class="number">1</span>,</span><br><span class="line">                    type: <span class="string">'solid'</span></span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            borderColor: <span class="string">'rgba(0,0,0,0)'</span>,</span><br><span class="line">            borderWidth: <span class="number">1</span>,</span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// position: 'outer'</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;,</span><br><span class="line">            labelLine: &#123;</span><br><span class="line">                show: <span class="literal">false</span>,</span><br><span class="line">                length: <span class="number">20</span>,</span><br><span class="line">                lineStyle: &#123;</span><br><span class="line">                    <span class="comment">// color: 各异,</span></span><br><span class="line">                    width: <span class="number">1</span>,</span><br><span class="line">                    type: <span class="string">'solid'</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">&#125;,</span><br></pre></td></tr></table></figure><h2 id="地图默认参数"><a href="#地图默认参数" class="headerlink" title="地图默认参数"></a>地图默认参数</h2><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><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></pre></td><td class="code"><pre><span class="line">map: &#123;</span><br><span class="line">    mapType: <span class="string">'china'</span>,   <span class="comment">// 各省的mapType暂时都用中文</span></span><br><span class="line">    mapLocation: &#123;</span><br><span class="line">        x : <span class="string">'center'</span>,</span><br><span class="line">        y : <span class="string">'center'</span></span><br><span class="line">        <span class="comment">// width    // 自适应</span></span><br><span class="line">        <span class="comment">// height   // 自适应</span></span><br><span class="line">    &#125;,</span><br><span class="line">    showLegendSymbol : <span class="literal">true</span>,       <span class="comment">// 显示图例颜色标识（系列标识的小圆点），存在legend时生效</span></span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            borderColor: <span class="string">'#fff'</span>,</span><br><span class="line">            borderWidth: <span class="number">1</span>,</span><br><span class="line">            areaStyle: &#123;</span><br><span class="line">                color: <span class="string">'#ccc'</span>   <span class="comment">//rgba(135,206,250,0.8)</span></span><br><span class="line">            &#125;,</span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span>,</span><br><span class="line">                textStyle: &#123;</span><br><span class="line">                    color: <span class="string">'rgba(139,69,19,1)'</span></span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;                <span class="comment">// 也是选中样式</span></span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            borderColor: <span class="string">'rgba(0,0,0,0)'</span>,</span><br><span class="line">            borderWidth: <span class="number">1</span>,</span><br><span class="line">            areaStyle: &#123;</span><br><span class="line">                color: <span class="string">'rgba(255,215,0,0.8)'</span></span><br><span class="line">            &#125;,</span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span>,</span><br><span class="line">                textStyle: &#123;</span><br><span class="line">                    color: <span class="string">'rgba(139,69,19,1)'</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">&#125;,</span><br></pre></td></tr></table></figure><h2 id="关系图默认参数"><a href="#关系图默认参数" class="headerlink" title="关系图默认参数"></a>关系图默认参数</h2><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><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></pre></td><td class="code"><pre><span class="line">force : &#123;</span><br><span class="line">    <span class="comment">// 数据map到圆的半径的最小值和最大值</span></span><br><span class="line">    minRadius : <span class="number">10</span>,</span><br><span class="line">    maxRadius : <span class="number">20</span>,</span><br><span class="line">    density : <span class="number">1.0</span>,</span><br><span class="line">    attractiveness : <span class="number">1.0</span>,</span><br><span class="line">    <span class="comment">// 初始化的随机大小位置</span></span><br><span class="line">    initSize : <span class="number">300</span>,</span><br><span class="line">    <span class="comment">// 向心力因子，越大向心力越大</span></span><br><span class="line">    centripetal : <span class="number">1</span>,</span><br><span class="line">    <span class="comment">// 冷却因子</span></span><br><span class="line">    coolDown : <span class="number">0.99</span>,</span><br><span class="line">    <span class="comment">// 分类里如果有样式会覆盖节点默认样式</span></span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;,</span><br><span class="line">            nodeStyle : &#123;</span><br><span class="line">                brushType : <span class="string">'both'</span>,</span><br><span class="line">                color : <span class="string">'#f08c2e'</span>,</span><br><span class="line">                strokeColor : <span class="string">'#5182ab'</span></span><br><span class="line">            &#125;,</span><br><span class="line">            linkStyle : &#123;</span><br><span class="line">                strokeColor : <span class="string">'#5182ab'</span></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;,</span><br><span class="line">            nodeStyle : &#123;&#125;,</span><br><span class="line">            linkStyle : &#123;&#125;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="弦图"><a href="#弦图" class="headerlink" title="弦图"></a>弦图</h2><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><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></pre></td><td class="code"><pre><span class="line">chord : &#123;</span><br><span class="line">    radius : [<span class="string">'65%'</span>, <span class="string">'75%'</span>],</span><br><span class="line">    center : [<span class="string">'50%'</span>, <span class="string">'50%'</span>],</span><br><span class="line">    padding : <span class="number">2</span>,</span><br><span class="line">    sort : <span class="string">'none'</span>,   <span class="comment">// can be 'none', 'ascending', 'descending'</span></span><br><span class="line">    sortSub : <span class="string">'none'</span>, <span class="comment">// can be 'none', 'ascending', 'descending'</span></span><br><span class="line">    startAngle : <span class="number">90</span>,</span><br><span class="line">    clockWise : <span class="literal">false</span>,</span><br><span class="line">    showScale : <span class="literal">false</span>,</span><br><span class="line">    showScaleText : <span class="literal">false</span>,</span><br><span class="line">    itemStyle : &#123;</span><br><span class="line">        normal : &#123;</span><br><span class="line">            label : &#123;</span><br><span class="line">                show : <span class="literal">true</span></span><br><span class="line">                <span class="comment">// textStyle: null      // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;,</span><br><span class="line">            lineStyle : &#123;</span><br><span class="line">                width : <span class="number">0</span>,</span><br><span class="line">                color : <span class="string">'#000'</span></span><br><span class="line">            &#125;,</span><br><span class="line">            chordStyle : &#123;</span><br><span class="line">                lineStyle : &#123;</span><br><span class="line">                    width : <span class="number">1</span>,</span><br><span class="line">                    color : <span class="string">'#666'</span></span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis : &#123;</span><br><span class="line">            lineStyle : &#123;</span><br><span class="line">                width : <span class="number">0</span>,</span><br><span class="line">                color : <span class="string">'#000'</span></span><br><span class="line">            &#125;,</span><br><span class="line">            chordStyle : &#123;</span><br><span class="line">                lineStyle : &#123;</span><br><span class="line">                    width : <span class="number">2</span>,</span><br><span class="line">                    color : <span class="string">'#333'</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">&#125;,</span><br></pre></td></tr></table></figure><h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2><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><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></pre></td><td class="code"><pre><span class="line">island: &#123;</span><br><span class="line">    r: <span class="number">15</span>,</span><br><span class="line">    calculateStep: <span class="number">0.1</span>  <span class="comment">// 滚轮可计算步长 0.1 = 10%</span></span><br><span class="line">&#125;,</span><br><span class="line"></span><br><span class="line">markPoint : &#123;</span><br><span class="line">    symbol: <span class="string">'pin'</span>,         <span class="comment">// 标注类型</span></span><br><span class="line">    symbolSize: <span class="number">10</span>,            <span class="comment">// 标注大小，半宽（半径）参数，当图形为方向或菱形则总宽度为symbolSize * 2</span></span><br><span class="line">    <span class="comment">//symbolRotate : null, // 标注旋转控制</span></span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: 各异，</span></span><br><span class="line">            <span class="comment">// borderColor: 各异,     // 标注边线颜色，优先于color</span></span><br><span class="line">            borderWidth: <span class="number">2</span>,         <span class="comment">// 标注边线线宽，单位px，默认为1</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">true</span>,</span><br><span class="line">                position: <span class="string">'inside'</span>    <span class="comment">// 可选为'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                <span class="comment">// textStyle: null    // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: 各异</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">true</span></span><br><span class="line">                <span class="comment">// position: 'inside'    // 'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                <span class="comment">// textStyle: null     // 默认使用全局文本样式，详见TEXTSTYLE</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></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><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></pre></td><td class="code"><pre><span class="line">markLine : &#123;</span><br><span class="line">    <span class="comment">// 标线起始和结束的symbol介绍类型，如果都一样，可以直接传string</span></span><br><span class="line">    symbol: [<span class="string">'circle'</span>, <span class="string">'arrow'</span>],</span><br><span class="line">    <span class="comment">// 标线起始和结束的symbol大小，半宽（半径）参数，当图形为方向或菱形则总宽度为symbolSize * 2</span></span><br><span class="line">    symbolSize: [<span class="number">2</span>, <span class="number">4</span>],</span><br><span class="line">    <span class="comment">// 标线起始和结束的symbol旋转控制</span></span><br><span class="line">    <span class="comment">//symbolRotate : null,</span></span><br><span class="line">    itemStyle: &#123;</span><br><span class="line">        normal: &#123;</span><br><span class="line">            <span class="comment">// color: 各异,           // 标线主色，线色，symbol主色</span></span><br><span class="line">            <span class="comment">// borderColor: 随color,       // 标线symbol边框颜色，优先于color</span></span><br><span class="line">            borderWidth: <span class="number">2</span>,          <span class="comment">// 标线symbol边框线宽，单位px，默认为2</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span>,</span><br><span class="line">                <span class="comment">// 可选为 'start'|'end'|'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                position: <span class="string">'inside'</span>,</span><br><span class="line">                textStyle: &#123;         <span class="comment">// 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">                    color: <span class="string">'#333'</span></span><br><span class="line">                &#125;</span><br><span class="line">            &#125;,</span><br><span class="line">            lineStyle: &#123;</span><br><span class="line">                <span class="comment">// color: 随borderColor,    // 主色，线色，优先级高于borderColor和color</span></span><br><span class="line">                <span class="comment">// width: 随borderWidth,    // 优先于borderWidth</span></span><br><span class="line">                type: <span class="string">'solid'</span>,</span><br><span class="line">                shadowColor : <span class="string">'rgba(0,0,0,0)'</span>, <span class="comment">//默认透明</span></span><br><span class="line">                shadowBlur: <span class="number">5</span>,</span><br><span class="line">                shadowOffsetX: <span class="number">3</span>,</span><br><span class="line">                shadowOffsetY: <span class="number">3</span></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;,</span><br><span class="line">        emphasis: &#123;</span><br><span class="line">            <span class="comment">// color: 各异</span></span><br><span class="line">            label: &#123;</span><br><span class="line">                show: <span class="literal">false</span></span><br><span class="line">                <span class="comment">// position: 'inside'   // 'left'|'right'|'top'|'bottom'</span></span><br><span class="line">                <span class="comment">// textStyle: null    // 默认使用全局文本样式，详见TEXTSTYLE</span></span><br><span class="line">            &#125;,</span><br><span class="line">            lineStyle : &#123;&#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><br><span class="line">textStyle: &#123;</span><br><span class="line">    decoration: <span class="string">'none'</span>,</span><br><span class="line">    fontFamily: <span class="string">'Arial, Verdana, sans-serif'</span>,</span><br><span class="line">    fontFamily2: <span class="string">'微软雅黑'</span>,    <span class="comment">// IE8- 字体模糊并且不支持不同字体混排，额外指定一份</span></span><br><span class="line">    fontSize: <span class="number">12</span>,</span><br><span class="line">    fontStyle: <span class="string">'normal'</span>,</span><br><span class="line">    fontWeight: <span class="string">'normal'</span></span><br><span class="line">&#125;,</span><br></pre></td></tr></table></figure><h2 id="默认标志图形类型列表"><a href="#默认标志图形类型列表" class="headerlink" title="默认标志图形类型列表"></a>默认标志图形类型列表</h2><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></pre></td><td class="code"><pre><span class="line">symbolList : [</span><br><span class="line">  <span class="string">'circle'</span>, <span class="string">'rectangle'</span>, <span class="string">'triangle'</span>, <span class="string">'diamond'</span>,</span><br><span class="line">  <span class="string">'emptyCircle'</span>, <span class="string">'emptyRectangle'</span>, <span class="string">'emptyTriangle'</span>, <span class="string">'emptyDiamond'</span></span><br><span class="line">],</span><br><span class="line">loadingText : <span class="string">'Loading...'</span>,</span><br><span class="line"><span class="comment">// 可计算特性配置，孤岛，提示颜色</span></span><br><span class="line">calculable: <span class="literal">false</span>,                       <span class="comment">// 默认关闭可计算特性</span></span><br><span class="line">calculableColor: <span class="string">'rgba(255,165,0,0.6)'</span>,       <span class="comment">// 拖拽提示边框颜色</span></span><br><span class="line">calculableHolderColor: <span class="string">'#ccc'</span>,               <span class="comment">// 可计算占位提示颜色</span></span><br><span class="line">nameConnector: <span class="string">' &amp; '</span>,</span><br><span class="line">valueConnector: <span class="string">' : '</span>,</span><br><span class="line">animation: <span class="literal">true</span>,</span><br><span class="line">animationThreshold: <span class="number">2500</span>,           <span class="comment">// 动画元素阀值，产生的图形原素超过2500不出动画</span></span><br><span class="line">addDataAnimation: <span class="literal">true</span>,         <span class="comment">// 动态数据接口是否开启动画效果</span></span><br><span class="line">animationDuration: <span class="number">2000</span>,</span><br><span class="line">animationEasing: <span class="string">'ExponentialOut'</span>             <span class="comment">//BounceOut</span></span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;Echarts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;千万级数据可视化渲染能力&lt;/li&gt;
&lt;li&gt;SVG + Canvas 双引擎动力更佳&lt;/li&gt;
&lt;li&gt;数据样式分离及扁平配置让开发更便捷&lt;/li&gt;
&lt;li&gt;首创无障碍访问支持&lt;/li&gt;
&lt;li&gt;微信小程序、PPT，哪里都能用
    
    </summary>
    
      <category term="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Echarts" scheme="https://lee.js.org/tags/Echarts/"/>
    
  </entry>
  
  <entry>
    <title>NodeJs</title>
    <link href="https://lee.js.org/2018/07/12/NodeJs/"/>
    <id>https://lee.js.org/2018/07/12/NodeJs/</id>
    <published>2018-07-12T09:52:24.000Z</published>
    <updated>2019-03-08T04:05:11.655Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>尽请期待！</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="Nodejs" scheme="https://lee.js.org/categories/Nodejs/"/>
    
    
      <category term="NodeJs" scheme="https://lee.js.org/tags/NodeJs/"/>
    
  </entry>
  
  <entry>
    <title>Ajax</title>
    <link href="https://lee.js.org/2018/07/12/Ajax/"/>
    <id>https://lee.js.org/2018/07/12/Ajax/</id>
    <published>2018-07-12T09:50:31.000Z</published>
    <updated>2019-03-08T04:04:36.869Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>敬请期待！</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="Frontend" scheme="https://lee.js.org/categories/Frontend/"/>
    
    
      <category term="Ajax" scheme="https://lee.js.org/tags/Ajax/"/>
    
  </entry>
  
  <entry>
    <title>初识PHP</title>
    <link href="https://lee.js.org/2018/07/12/%E5%88%9D%E8%AF%86PHP/"/>
    <id>https://lee.js.org/2018/07/12/初识PHP/</id>
    <published>2018-07-12T09:46:28.000Z</published>
    <updated>2019-03-08T04:04:38.023Z</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><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>PHP（外文名:PHP: Hypertext Preprocessor）：超文本预处理器。是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点，利于学习，使用广泛，主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页用PHP做出的动态页面与其他的编程语言相比，PHP是将程序嵌入到HTML（标准通用标记语言下的一个应用）文档中去执行，执行效率比完全生成HTML标记的CGI要高许多；PHP还可以执行编译后代码，编译可以达到加密和优化代码运行，使代码运行更快。以前是没有前端这个职位的，随着计算机语言的发展Ajax的出现，有了前后端分离这一概念。</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="Backend" scheme="https://lee.js.org/categories/Backend/"/>
    
    
      <category term="PHP" scheme="https://lee.js.org/tags/PHP/"/>
    
  </entry>
  
</feed>
