<译>创建一个Hexo主题-Part1:首页

前言:
本系列文章翻译自@Jonathan Klughertz的博客,将会用三篇文章的篇幅详细讲解如何制作一个Hexo主题。
我不是学翻译出身,若有翻译错误或是不到位之处,请指正。


在这个系列教程中,你将学习怎么从零开始制作一个Hexo主题。我很喜欢Hexo,并且每天都在使用,不幸的是,直到今天关于主题制作的文档还是相当稀缺。所以我打算弥补这个空缺。

预先准备

  • Hexo博客的基础使用。如果你是第一次接触,请前往官网阅读教程
  • 了解Bootstrap
  • 了解Javascript模板引擎(我们将使用EJS)

项目描述

这个项目旨在制作一个Hexo主题并详细了解Hexo引擎的工作方式。
我不想在HTML和CSS上花费太多时间,所以我们将重置下面这个Hexo主题:https://getbootstrap.com/docs... 。它是Bootstrap文档中的一个标准初始模板样例。
我们将一步步地重用CSS、复制粘贴HTML,直到最后实现想要的效果。
如果你感到困惑或者只对它的代码感兴趣,请前往github

项目结构

创建一个新的hexo博客

让我们从搭建一个全新的hexo博客开始吧

# Create a new folder
mkdir hexo-theme-creation 
cd hexo-theme-creation
# Initialise Hexo
hexo init

创建主题文件夹

# Enter the theme folder
cd themes
# bootstrap-blog-hexo is also going to be the name of our theme
mkdir bootstrap-blog-hexo

注意:如果你想在git中保存主题的话(你也应该这么做),请在/themes/bootstrap-blog-hexo/中初始化git。

文件夹结构

这是我们开始工作所需要的文件和文件夹:

|-- layout // .ejs templates 
|-- source // source files (CSS, scripts)
|-- _config.yml

创建以下两个文件夹和_config.yml文件。

复制bootstrap blog源码

bootstrap blog template复制所有我们需要的源码并放在source文件夹里。你可以选择通过浏览器查看源码并复制下来,或者是下载该压缩包,之后解压到source文件夹里。

|-- layout 
|-- source 
    |-- bootstrap // Copy the boostrap library files here 
    |-- css // Copy the blog's css file here
    |-- favicon
        |-- favicon.ico // Your choice of favicon
    |-- js // Copy the blog's js file here
|-- _config.yml

Hexo的基本要素

在我们开始写第一个模板文件之前,先来看看Hexo博客生成过程的基本要素。

页面类型

我们能够在主题中定义6种页面类型,与之相对应地,在public文件夹生成的每一个单独的HTML页面都属于下面模板中的其中一个:

模板 备用模板 页面描述
index 这是博客的首页,也是网站的主要入口。本教程中我们将让其显示文章摘要列表
post index 这是文章的详情页。我们将展示一篇完整的文章以及一个评论区
page index 这是页面的详情页,与post一样,但是是page类型的post
archive index 这是归档页。它将显示我们博客中所有文章的标题和详情页链接
category archive 这是分类页。与归档页类似,但是会根据类别进行筛选
tag archive 这是标签页。与分类页类似,但是会根据标签进行筛选

在本篇教程中我们将创建index模板。

在页面生成过程中,Hexo将会搜索名字为index.ejs,post.ejs,page.ejs等的文件,这些模板之后用于创建静态HTML页面。

公共布局

Hexo支持使用公共的布局文件,上面的模板都将使用到该文件。
该文件命名为layout.ejs。不同页面类型的模板会创建一些内容,而这个文件就好比这些内容的“外壳”。
在我们的主题中,公共布局将包括:标签、标签、头部、菜单、底部和侧边栏。基本上是所有类型的页面都具备的元素。
不同的页面模板将只负责创建实际内容,这些内容将放在我们的主体部位。

变量

在所有的模板中,我们都可以使用hexo引擎提供的内置变量。以下是部分变量:

  • Site:site包含了网站的信息。例如,我们可以通过site.posts访问博客中的所有文章。当我们想要显示统计数据的时候,这将派上用场。
  • Page:page是主要变量,包含了许多与当前页面相关的信息,包括所有的文章标题、日期、内容等。
  • Config:config是一个指向站点_config.yml文件的JavaScript对象
  • Theme:theme是一个指向主题_config.yml文件的JavaScript对象

主题的布局创建

上面提及了/layout/layout.ejs文件,现在我们开始来创建它。

顶部标签

首先创建layout.ejs文件并插入标签

//layout/layout.ejs


<%- partial('_partial/head') %>

这里我们将所有标签里的代码提取出来并放在局部视图中,这有助于实现关注点分离和代码重用。
语法是partial('path' [, arguments])
在创建layout/_partial/head.ejs文件后,从bootstrap源码中复制head标签里的代码:

// layout/_partial/head.ejs

    
    
    
    
    
    
    
    Blog Template for Bootstrap
    
    <%- css('bootstrap/css/bootstrap.min.css') %>
    
    <%- css('css/ie10-viewport-bug-workaround.css') %>
    
    <%- css('css/blog.css') %>
    
    

这很简单,我们只需使用CSS helper插入样式表。
source文件夹中的文件将会被复制到站点根目录下,所以不要在路径中包含source/
我们将让</code>和<code><meta></code>标签保持动态,不过现在先暂且不管它们。</p> <h4>底部标签</h4> <p>底部标签位于<code></body></code>之前。我们将在这个局部视图中包含所有脚本。<br>先修改一下布局:</p> <pre><code class="js">// layout/layout.ejs <html> <!-- Head tag --> <%- partial('_partial/head') %> <body> <!-- After footer scripts --> <%- partial('_partial/after-footer') %> </body> </html></code></pre> <p>然后创建<code>layout/_partial/after-footer.ejs</code>的内容:</p> <pre><code class="js">// layout/_partial/after-footer.ejs <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <%- js('bootstrap/js/bootstrap.min.js') %> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> <%- js('js/ie10-viewport-bug-workaround.js') %></code></pre> <p>注意<a href="https://hexo.io/docs/helpers.html#js" rel="nofollow noreferrer">JS helper function</a>的使用,它将引用本地js文件。</p> <h4>顶部菜单</h4> <p>类似地,在<code><body></code>标签后创建顶部菜单。</p> <pre><code class="js">// layout/layout.ejs // [...] <body> <!-- Menu --> <%- partial('_partial/menu') %> // [...]</code></pre> <p><code>layout/_partial/menu.ejs </code>的内容:</p> <pre><code class="js">// layout/_partial/menu.ejs <div class="blog-masthead"> <div class="container"> <nav class="blog-nav"> <% for (var i in theme.menu){ %> <a class="blog-nav-item" href="<%- url_for(theme.menu[i]) %>"><%= i %></a> <% } %> </nav> </div> </div></code></pre> <p>注意<code>theme</code>全局变量的使用,它指向的是主题的<code>_config.yml</code>文件。为了可以在主题配置中配置菜单,我们需要在<code>_config.yml</code>文件中添加配置:</p> <pre><code>_config.yml # Header menu: Home: / Archives: /archives</code></pre> <p>在<code>menu.ejs</code>中我们遍历了配置文件中所有的菜单项目并创建对应的链接。</p> <h4>顶部</h4> <p>顶部将位于顶部菜单下面,它包含了博客标题和子标题:</p> <pre><code class="js">// layout/_partial/header.ejs <div class="blog-header"> <h1 class="blog-title"><%= config.title %></h1> <p class="lead blog-description"><% if (config.subtitle){ %><%= config.subtitle %><% } %></p> </div></code></pre> <p>这里我们使用了指向站点<code>_config.yml</code>文件的<code>config</code>变量,它包含了可供配置的标题和子标题属性。<br>注意在布局的<code><div class="container"><div></code>中嵌套顶部:</p> <pre><code class="js">// layout/layout.ejs <html> <!-- Head tag --> <%- partial('_partial/head') %> <body> <!-- Menu --> <%- partial('_partial/menu') %> <div class="container"> <!-- Blog Header: title and subtitle --> <%- partial('_partial/header') %> </div> // [...]</code></pre> <h4>底部</h4> <p>底部现在是完全静态的,内容如下:</p> <pre><code class="js">// layout/_partial/footer.ejs <footer class="blog-footer"> <p>Blog template built for <a href="http://getbootstrap.com">Bootstrap</a> by <a href="https://twitter.com/mdo">@mdo</a>.</p> <p>Adapted to Hexo by <a href="http://www.codeblocq.com/">klugjo</a>.</p> <p><a href="#">Back to top</a></p> </footer></code></pre> <h4>主要内容和侧边栏</h4> <p>此时,我们再加上主要内容和侧边栏,基本就差不多了。<br>下面是最终的<code>layout.ejs</code>:</p> <pre><code class="js">// layout/layout.ejs <html> <!-- Head tag --> <%- partial('_partial/head') %> <body> <!-- Menu --> <%- partial('_partial/menu') %> <div class="container"> <!-- Blog Header: title and subtitle --> <%- partial('_partial/header') %> <div class="row"> <!-- Main Content --> <div class="col-sm-8 blog-main"> <%- body %> </div> <!-- Sidebar --> <div class="col-sm-3 col-sm-offset-1 blog-sidebar"> <%- partial('_partial/sidebar') %> </div> </div> </div> <!-- Footer --> <%- partial('_partial/footer') %> <!-- After footer scripts --> <%- partial('_partial/after-footer') %> </body> </html></code></pre> <p><code>body</code>变量对应了不同页面类型模板创建的内容(参见上面)。<br>至于侧边栏,我们现在暂且使用来自bootstrap模板的硬编码:</p> <pre><code class="js">// layout/_partial/sidebar.ejs <div class="sidebar-module sidebar-module-inset"> <h4>About</h4> <p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p> </div> <div class="sidebar-module"> <h4>Archives</h4> <ol class="list-unstyled"> <li><a href="#">March 2014</a></li> <li><a href="#">February 2014</a></li> <li><a href="#">January 2014</a></li> <li><a href="#">December 2013</a></li> <li><a href="#">November 2013</a></li> </ol> </div> <div class="sidebar-module"> <h4>Elsewhere</h4> <ol class="list-unstyled"> <li><a href="#">GitHub</a></li> <li><a href="#">Twitter</a></li> <li><a href="#">Facebook</a></li> </ol> </div></code></pre> <h3>首页文件</h3> <p>布局到位后,我们就可以开始创建第一个页面类型模板inde.ejs了。<br>这是比较简陋的第一个版本:</p> <pre><code class="js">// layout/index.ejs <span>Content</span></code></pre> <p>别小瞧它,我们可以用这个在浏览器中测试主题:</p> <pre><code># Verify that everything is alright hexo generate # Start hexo server hexo server</code></pre> <p>访问 <a href="http://localhost" rel="nofollow noreferrer">http://localhost</a>:4000/ 。哇!<br>注意:不要忘记在站点的config文件中更新主题:</p> <pre><code>_config.yml # Extensions ## Plugins: http://hexo.io/plugins/ ## Themes: http://hexo.io/themes/ theme: bootstrap-blog-hexo</code></pre> <h4>遍历博客文章</h4> <p>我们想要在首页显示各篇文章的摘要。<br>首先,在我们的index.ejs文件中遍历文章:</p> <pre><code class="js">// layout.index.ejs <% page.posts.each(function(item){ %> <%- partial('_partial/article-excerpt', {item: item}) %> <% }); %></code></pre> <ul> <li>通过<code>page.posts</code>获取该页面的所有文章</li> <li>通过<code><%- partial('name', args) %></code>给partial传参</li> </ul> <h4>文章布局</h4> <p>创建<code>article-excerpt.ejs</code>文件,添加适合主题的代码。这是我的布局:</p> <pre><code class="js">// layout/_partial/article-excerpt.ejs <div class="blog-post"> <!-- Title --> <h2 class="blog-post-title"> <a href="<%- config.root %><%- item.path %>"> <%- item.title %> </a> </h2> <!-- Date and Author --> <p class="blog-post-meta"> <%= item.date.format(config.date_format) %> <% if(item.author) { %> by <%- item.author %> <% } %> </p> <!-- Content --> <%- item.excerpt || item.content %> <!-- Only display the Read More link if we are displaying an excerpt --> <% if(item.excerpt) { %> <p> <a href="<%- config.root %><%- item.path %>"> <%= theme.excerpt_link %> </a> </p> <% } %> </div></code></pre> <h5>全文链接</h5> <p>全文链接是由<code>config.root</code>(配置选项,相当于<code>/</code>)和<code>item.path</code>(相对路径或者绝对路径,指向全文)连接组成的。</p> <h5>文章作者</h5> <p>默认情况下,Hexo没有关于作者属性的的文章变量。不过我们可以在<a href="https://hexo.io/docs/front-matter.html" rel="nofollow noreferrer">front matter</a>中添加任意自己想要的变量。<br>如果你想要在文章中显示作者名字,那么文章的front matter应该类似如下进行设置:</p> <pre><code>title: Hello World author: Klughertz Jonathan ---</code></pre> <h5>Item excerpt 和 Item content</h5> <p>当用Hexo编辑文章时,你可以用<code><!-- more --></code>标签从文章内容中截取摘要。在本教程中,因为我们展示的是文章列表,所以选择显示摘要。之后用户可以通过点击文章标题或者“阅读更多”的链接浏览全文。</p> <h5>“阅读更多”文本</h5> <p>别忘了,你需要像我这样在主题的配置文件中添加一个新的属性:</p> <pre><code>_config.yml # Read More text excerpt_link: Read More</code></pre> <p>希望接下来的代码容易理解。现在,我建议你写一些除了默认的Hello World之外的文章并享受这个结果。</p> <h3>分页器</h3> <p>在本篇文章中,我们最后需要处理的是首页的分页器。<br>在<code>index.ejs</code>文件中增加一个分页器的partial:</p> <pre><code class="js">// layout/index.ejs <% page.posts.each(function(item){ %> <%- partial('_partial/article-excerpt', {item: item}) %> <% }); %> <%- partial('_partial/pagination') %></code></pre> <p>之后开始创建分页器的内容,<code>layout/_partial/pagination.ejs</code>:</p> <pre><code class="js">// layout/_partial/pagination.ejs <nav> <ul class="pager"> <% if (page.prev){ %> <li><a href="<%- config.root %><%- page.prev_link %>">Previous</a></li> <% } %> <% if (page.next){ %> <li><a href="<%- config.root %><%- page.next_link %>">Next</a></li> <% } %> </ul> </nav></code></pre> <ul> <li> <code>page.prev</code>:上一页的页码。如果当前页是第一页,则为0</li> <li> <code>page.next</code>:下一页的页码。如果当前页是最后一页,则为0</li> <li> <code>page.next_link</code>和<code>page.prev_link</code>是什么就不用多说了。</li> </ul> <p>如果你没有足够的文章用来查看分页器的工作效果,可以在主配置文件中(<code>per_page</code>属性)调整每一页的文章数。</p> <p>这就是今天的内容,在下一篇教程中,我们将完成博客剩下的所有页面。</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1297789002375569408"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(html+css+js,hexo,ejs)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1833639910708441088.htm" title="Gitbook 本地安装教程" target="_blank">Gitbook 本地安装教程</a> <span class="text-muted">simple哇</span> <a class="tag" taget="_blank" href="/search/%E4%B9%A6%E7%B1%8D/1.htm">书籍</a><a class="tag" taget="_blank" href="/search/gitbook/1.htm">gitbook</a> <div>Gitbook本地安装教程安装node[nodejs的v10.21.0版本,下载地址:https://nodejs.org/dist/v10.21.0/node-v10.21.0-x64.msi]其他版本有问题npmnpminstall-ggitbook-cligitbookinit[初始化目录结构]gitbookbuild[编译]gitbookserve[运行]插件在根目录新建book.json</div> </li> <li><a href="/article/1833272290649927680.htm" title="hexo+GitHub Pages一键搭建部署博客" target="_blank">hexo+GitHub Pages一键搭建部署博客</a> <span class="text-muted">杨yang$</span> <a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/hexo/1.htm">hexo</a> <div>文章目录前言:博客相关配置matery主题相关配置1.什么是Hexo?2.准备工作:3.生成博客4.更换主题5.部署到githubpages总结前言:现在技术更新迭代是非常的快,尤其是web方面!所以当前搭建一个博客差不多有手就行,这里我们用到hexo进行博客的一键生成和部署。我自己的博客也是用hexo搭建的:杨Yang博客相关配置matery主题相关配置1.什么是Hexo?Hexo是一个快速、简</div> </li> <li><a href="/article/1833271280258871296.htm" title="fastapi 大型应用_FastAPI使用小结" target="_blank">fastapi 大型应用_FastAPI使用小结</a> <span class="text-muted">行走的VCD</span> <a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%9E%8B%E5%BA%94%E7%94%A8/1.htm">大型应用</a> <div>以一个实际构建API的例子介绍FastAPI在已有数据情况下的简单应用简介FastAPI是一个现代、快速(高性能)的Web框架,基于标准Python类型提示,使用Python3.6+构建API。主要特征是:高速:与NodeJS和Go相当,拥有高性能。现有最快的Python框架之一。快速编码:将功能开发速度提高约200%至300%。更少的Bug:减少约40%的人为(开发人员)导致的错误。直观:更好的</div> </li> <li><a href="/article/1833252618835685376.htm" title="萱仔个人博客系列——hexo+github部署" target="_blank">萱仔个人博客系列——hexo+github部署</a> <span class="text-muted">萱仔学习自我记录</span> <a class="tag" taget="_blank" href="/search/%E8%90%B1%E4%BB%94%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/1.htm">萱仔个人博客</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a> <div>由于本人前段时间和同专业得到好offer的同学之间的交流,发现博客其实对于找工作来说可以作为个人项目个人经历的展示,我创办cdsn博客的原因主要是为了自己学习使用,但是逐渐到现在也有了一些可爱的粉丝,非常感谢大家对我的点赞收藏和关注,我将继续精进自己的学习,学习理论和技术,刷力扣题,争取获得更好的offer。csdn博客本身就是非常好的一个平台,但是我还是决定自己创建一个自己的博客,两边同时更新,</div> </li> <li><a href="/article/1832837561534476288.htm" title="【nvm】误操作npm install npm@latest -g如何回退" target="_blank">【nvm】误操作npm install npm@latest -g如何回退</a> <span class="text-muted">纳米小川</span> <a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a><a class="tag" taget="_blank" href="/search/nvm/1.htm">nvm</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/nvm/1.htm">nvm</a> <div>加入电脑原来的node版本是14.19.1,那误操作npminstallnpm@latest-g后的npm版本已经不适用node版本了,此时要做回退操作1、查看当前可下载nodejs的最高版本nvmlistavailable2、下载最新的node版本nvminstall20.16.03、使用最新的node版本nvmust20.16.04、查看node14.19.1对应的npm版本npm6.x:通常</div> </li> <li><a href="/article/1832637356843298816.htm" title="Linux中设置vue项目服务自启动" target="_blank">Linux中设置vue项目服务自启动</a> <span class="text-muted">ADONGS_CODER</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>一、摘要vue项目服务启动是进入到根目录,然后使用npmrundev启动环境,服务器由于重启或者网络波动等原因,会无辜的停止这个服务,如果是自己搭建的项目想自动启动,则需要搭建自启动服务。二、操作1.安装nvm管理包nvm管理包,据我目前的理解,大概就是像conda一样的一个容器,可以管理各种版本的nodejs和npm,这样就容易处理版本冲突问题。推荐下载curl-o-https://raw.gi</div> </li> <li><a href="/article/1832621857744973824.htm" title="HTML5生日祝福蛋糕页面(生日蛋糕树) HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码 css爱心" target="_blank">HTML5生日祝福蛋糕页面(生日蛋糕树) HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码 css爱心</a> <span class="text-muted">@秋天的笔记</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%97%A5%E7%A5%9D%E7%A6%8F%E7%BD%91%E9%A1%B5html/1.htm">生日祝福网页html</a><a class="tag" taget="_blank" href="/search/520%E6%83%85%E4%BA%BA%E8%8A%82%E5%91%8A%E7%99%BD%E7%BD%91%E9%A1%B5%E5%88%B6%E4%BD%9C/1.htm">520情人节告白网页制作</a><a class="tag" taget="_blank" href="/search/%E4%B8%83%E5%A4%95%E6%83%85%E4%BA%BA%E8%8A%82%E8%A1%A8%E7%99%BD%E7%BD%91%E9%A1%B5%E6%BA%90%E4%BB%A3%E7%A0%81/1.htm">七夕情人节表白网页源代码</a><a class="tag" taget="_blank" href="/search/HTML5%E4%B8%83%E5%A4%95%E6%83%85%E4%BA%BA%E8%8A%82%E5%8A%A8%E7%94%BB%E7%BD%91%E9%A1%B5/1.htm">HTML5七夕情人节动画网页</a><a class="tag" taget="_blank" href="/search/HTML%E7%94%9F%E6%97%A5%E5%BF%AB%E4%B9%90%E4%BB%A3%E7%A0%81/1.htm">HTML生日快乐代码</a><a class="tag" taget="_blank" href="/search/3D%E6%97%8B%E8%BD%AC%E7%94%B5%E5%AD%90%E7%9B%B8%E5%86%8C/1.htm">3D旋转电子相册</a> <div>HTML5七夕情人节表白网页❤生日蛋糕(蛋糕树)❤HTML+CSS+JS求婚html生日快乐祝福代码网页520情人节告白代码程序员表白源码抖音3D旋转相册js烟花代码css爱心表白这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看。此波共有100个表白网站,可以任意修改和使用,源码已上传,演示网址如下。文章末尾-已经附上源码下载地址作者主页-更多源码1</div> </li> <li><a href="/article/1832618704010047488.htm" title="Vue-devtools安装" target="_blank">Vue-devtools安装</a> <span class="text-muted">zhouhao_180</span> <div>方法一:1、下载安装包到本地https://github.com/vuejs/vue-devtools2、打开下载好的文件夹,按住shift+鼠标右键,选择在此处打开Powershell窗口3、执行命令npminstall4、执行命令npmrunbuild这一步一定不要忘了,没有执行这一步的话,项目文件夹shells>chrome文件夹里会少一个src文件夹,这里会报错:无法加载背景脚本"buil</div> </li> <li><a href="/article/1832603070748520448.htm" title="回顾vue开发spa(踩坑记录)" target="_blank">回顾vue开发spa(踩坑记录)</a> <span class="text-muted">Just do it</span> <div>使用vueJS开发前端页面差不多也有大半多年了。由于项目后台管理页面最早都是使用JQ进行开发的,刚开始使用vue的时候,只能是直接在页面里面引入vueJS框架进行开发,期间把项目后台的编辑页面和其他复杂页面全部改用vueJS的了(没有用到组件,只是增强了一下交互,开发更简单便捷)。由于工期和个人习惯问题,期间也留下了很多坑和隐患,比如不少页面是JQ和vue混用,导致后来改功能的时候痛不欲生……所以</div> </li> <li><a href="/article/1832554527576911872.htm" title="AnnieJS 开源项目教程" target="_blank">AnnieJS 开源项目教程</a> <span class="text-muted">芮舒淑</span> <div>AnnieJS开源项目教程AnnieJSAnnieJS引擎是一款专注于互动交互的2d动画引擎。借助于AdobeAnimate以及Annie2x工具将以前开发as3项目的工作流程完美复制到其他需要交互的项目开发中来。更多资源和案例源码在国内码云上:https://gitee.com/flash2x项目地址:https://gitcode.com/gh_mirrors/an/AnnieJS项目介绍An</div> </li> <li><a href="/article/1832536376252395520.htm" title="【ttf压缩】网页开发中引入字体文件过大,加载缓慢的解决办法【字蛛】【web Font】" target="_blank">【ttf压缩】网页开发中引入字体文件过大,加载缓慢的解决办法【字蛛】【web Font】</a> <span class="text-muted">Luckstar_wei</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF/1.htm">技术</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E4%BD%93/1.htm">字体</a><a class="tag" taget="_blank" href="/search/ttf%E5%8E%8B%E7%BC%A9/1.htm">ttf压缩</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87%E5%AD%97%E4%BD%93%E5%8E%8B%E7%BC%A9/1.htm">中文字体压缩</a> <div>yueyemoyanweb中文字体演示与工具使用请前往主页:http://font-spider.org/需要安装node.js输入以下命令:npminstallfont-spider-g运行安装成功之后就开始压缩了我的目录是这样的我的css文件开头是这样的这里要确保ttf文件一定要有,其他的不管在你的html中也引用了相应的css文件接下来就是最后一步了生成新的字体库nodejs命令行输入fon</div> </li> <li><a href="/article/1832503267762991104.htm" title="Vue初步认识与Vue基础指令" target="_blank">Vue初步认识与Vue基础指令</a> <span class="text-muted">amanohina</span> <div>Vue.js简介先来谈谈传统网页开发传统开发的缺点:1.DOM操作频繁,代码繁杂2.DOM操作与逻辑代码混合,可维护性差3.不同功能区域书写在一起,可维护性低4.模块之间的依赖关系复杂Vue.js应运而生官网:https://cn.vuejs.orgVue.js核心特性数据驱动视图数据变化会自动更新到对应元素中,无需手动操作DOM,这种行为称作单向数据绑定。单向数据绑定对于输入框等可输入元素,可设</div> </li> <li><a href="/article/1832484189098831872.htm" title="[1286]python执行js代码方法汇总(PyExecJS、Js2Py、py-mini-racer)" target="_blank">[1286]python执行js代码方法汇总(PyExecJS、Js2Py、py-mini-racer)</a> <span class="text-muted">周小董</span> <a class="tag" taget="_blank" href="/search/Python%E5%89%8D%E8%A1%8C%E8%80%85/1.htm">Python前行者</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>文章目录js2py简介及使用js2py简介js2py模块的使用js2py快速入门js代码翻译js代码中使用函数python执行js代码,学会这几个方法就够了楔子常见的Python调用JavaScript的方式使用nodejs命令PyExecJS方法通过Web浏览器DrissionPage方式playwright方式selenium方式Js2Py方式py-mini-racer方式小结js2py简介及</div> </li> <li><a href="/article/1832385847769526272.htm" title="Vue3 + vite + antd2 vite.config.js及SyntaxError: The requested module ‘/node_modules/.vite/ant-design" target="_blank">Vue3 + vite + antd2 vite.config.js及SyntaxError: The requested module ‘/node_modules/.vite/ant-design</a> <span class="text-muted">咏春-迪迦</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>项目中使用Vue3+vite+antdv2.x的vite.config.js配置文件,复制粘贴即可使用!/***Vite配置文件*@author斗宗强者*@since2021-12-1623:09*/import{resolve}from"path";import{defineConfig}from"vite";importvuefrom"@vitejs/plugin-vue";importVit</div> </li> <li><a href="/article/1831938814252249088.htm" title="【itchat+python】24年从0搭建微信聊天机器人全过程分享" target="_blank">【itchat+python】24年从0搭建微信聊天机器人全过程分享</a> <span class="text-muted">捕捉阳光</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">微信聊天机器人</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1/1.htm">微信</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">机器人</a> <div>文章目录前言开整准备部署方法1部署方法2代码demo异常小结(含数据结构/心跳修改的源码位置)前言初学python,很多都并不是很熟练。就搞了好几天。目前初步已经搭建完成。之前使用的wechaty的uos版本感觉并不是很稳定,总是宕机,那个是nodejs的版本我并不会调整。nodejs我更加不会。所以就重新找个尝试。想尝试之前的版本的请阅读:【python+wechaty+docker+nodej</div> </li> <li><a href="/article/1831916241460228096.htm" title="工作记录:vue3配置proxy代理服务器" target="_blank">工作记录:vue3配置proxy代理服务器</a> <span class="text-muted">醇醇大魔王</span> <a class="tag" taget="_blank" href="/search/vue3/1.htm">vue3</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>修改vie.config.ts下边的server//https://vitejs.dev/config/exportdefaultdefineConfig({plugins:[vue()],resolve:{alias:{"@":resolve(__dirname,"./src")}},server:{host:"0.0.0.0",//"0.0.0.0"network和loaclhost地址都会显</div> </li> <li><a href="/article/1831906665180524544.htm" title="CentOS 7 安装Node.js V14.15" target="_blank">CentOS 7 安装Node.js V14.15</a> <span class="text-muted">@Link.Note</span> <a class="tag" taget="_blank" href="/search/Linux%E5%9F%BA%E7%A1%80%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/1.htm">Linux基础环境配置</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>1.下载nodejs安装文件wgethttps://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz若虚需要安装其他版本,直接将V14.15.4更换即可2.安装unzip应用yum-yinstallunzipziptar-xvfnode-v14.15.4-linux-x64.tar.xzmkdir-p/usr/local/nodejsm</div> </li> <li><a href="/article/1831891032820772864.htm" title="Qt 创建一个json数组对象写入文档并从文档读出q" target="_blank">Qt 创建一个json数组对象写入文档并从文档读出q</a> <span class="text-muted">死嗑到底</span> <a class="tag" taget="_blank" href="/search/Qt/1.htm">Qt</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a> <div>voidcreateJsonArray(){//创建一个JSON数组QJsonArrayjsonArray;//创建一些JSON对象并添加到数组中for(inti=0;i<3;++i){QJsonObjectjsonObject;jsonObject["key"+QString::number(i)]="value"+QString::number(i);jsonArray.append(json</div> </li> <li><a href="/article/1831836198029586432.htm" title="ClickHouse安装与使用指南" target="_blank">ClickHouse安装与使用指南</a> <span class="text-muted">富艾霏</span> <div>ClickHouse安装与使用指南clickhouseNodeJSclientforClickHouse项目地址:https://gitcode.com/gh_mirrors/clic/clickhouse项目介绍ClickHouse是由Yandex开发的一个用于在线分析处理(OLAP)的列式数据库管理系统(DBMS)。此开源项目位于https://github.com/TimonKK/click</div> </li> <li><a href="/article/1831823330848632832.htm" title="【前端Vue】06 - VueCLI 脚手架" target="_blank">【前端Vue】06 - VueCLI 脚手架</a> <span class="text-muted">itlu</span> <div>1.VueCLI介绍CLI是Command-LineInterface,翻译为命令行界面,但是俗称脚手架。VueCLI是一个官方发布vue.js项目脚手架,使用vue-cli可以快速搭建Vue开发环境以及对应的webpack配置。2.使用VueCLI需要做的准备2.1安装NodeJS下载地址。默认情况下自动安装Node和NPM。2.2安装符合要求的Node版本Node环境要求8.9以上或者更高版本</div> </li> <li><a href="/article/1831781755682648064.htm" title="module.exports 与 exports.xxx 的区别" target="_blank">module.exports 与 exports.xxx 的区别</a> <span class="text-muted">InterestAndFun</span> <a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a><a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a><a class="tag" taget="_blank" href="/search/module.exports/1.htm">module.exports</a><a class="tag" taget="_blank" href="/search/exports/1.htm">exports</a> <div>1.原理解析NodeJS中使用了CommonJS的模块化标准,Node内部提供一个Module构建函数。所有模块都是Module的实例。每个模块内部,都有一个module对象,代表当前模块。而这个module对象中,就存在一个成员exports,该成员也是一个对象。也就是说,如果你需要对外导出成员,只需要把导出的成员挂载到module.exports上就可以了,最终module对象中会执行retr</div> </li> <li><a href="/article/1831725397969039360.htm" title="Node.js Google Cloud Natural Language API 教程" target="_blank">Node.js Google Cloud Natural Language API 教程</a> <span class="text-muted">江奎钰</span> <div>Node.jsGoogleCloudNaturalLanguageAPI教程nodejs-languageThisrepositoryisdeprecated.Allofitscontentandhistoryhasbeenmovedtogoogleapis/google-cloud-node.项目地址:https://gitcode.com/gh_mirrors/no/nodejs-langua</div> </li> <li><a href="/article/1831725398392664064.htm" title="实时聊天应用开发指南:基于React与WebSocket" target="_blank">实时聊天应用开发指南:基于React与WebSocket</a> <span class="text-muted">江奎钰</span> <div>实时聊天应用开发指南:基于React与WebSocketreact-real-time-chat-appAreal-timechatapplicationbuiltusingReact(CreateReactApponthefrontend)andNodeJS/Express/Socket.ioBackend项目地址:https://gitcode.com/gh_mirrors/re/react-</div> </li> <li><a href="/article/1831702200708067328.htm" title="nodejs笔记总结" target="_blank">nodejs笔记总结</a> <span class="text-muted">是张鱼小丸子鸭</span> <a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>nodejs的概念:nodejs是一个基于ChromeV8引擎的JavaScript运行环境。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效。Node.js的包管理器npm,是全球最大的开源库生态系统。node组成:Ecmascript模块模块的分类:内置模块:fshttppathurl自定义模块:commonjs规范第三方模块(npm下载)常见的模块指令:npmnodep</div> </li> <li><a href="/article/1831689337415233536.htm" title="NodeJS笔记" target="_blank">NodeJS笔记</a> <span class="text-muted">是Neru呀</span> <a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a> <div>Node.jslnode.js组成[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F8WwuvRD-1623162009046)(file:Users/neru/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image023.png)]lNode.js模块化开发</div> </li> <li><a href="/article/1831658079045906432.htm" title="ETIMEDOU 104.16.20.35:443(已解决)" target="_blank">ETIMEDOU 104.16.20.35:443(已解决)</a> <span class="text-muted">憨憨憨憨憨到不行的程序员</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>npmERR!networkrequesttohttps://registry.npmjs.org/@nodelib%2ffs.stat,reason:connectETIMEDOUT104.16.20.35:443(已解决)安装好nodejs与yarn,下载项目后在项目主目录下运行yarn拉取依赖包时执行npminstall-gcnpm--registry=https://registry.np</div> </li> <li><a href="/article/1831403431064072192.htm" title="mac报错:zsh: command not found: npm" target="_blank">mac报错:zsh: command not found: npm</a> <span class="text-muted">雾林小妖</span> <a class="tag" taget="_blank" href="/search/Java%E9%A1%B9%E7%9B%AE%E5%BA%94%E7%94%A82/1.htm">Java项目应用2</a><a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a> <div>1、问题概述?在mac系统中使用npm命令的时候,macos报错提示:zsh:commandnotfound:npm一般出现发这种情况的原因时没有安装npm,而npm这命令时集成在nodejs中的,所以安装nodejs就可以了。2、解决办法本质就是需要安装nodejs,但是nodejs的安装又依赖brew命令,所以我们需要先安装brew。2.1、安装brew命令https://blog.csdn.</div> </li> <li><a href="/article/1831367385383268352.htm" title="CentOS7安装nodejs18" target="_blank">CentOS7安装nodejs18</a> <span class="text-muted">刘明同学呀</span> <a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a> <div>CentOS7安装nodejs18从nodejs18开始就不支持Centos7了,这是因为centos7的gilbc版本比较低,因此需要安装非官方构建的版本。Note:如果npm安装的包依赖于glibc,那得改用docker或者换操作系统了。到非官方发布版本网站下载压缩包node-v18.19.0-linux-x64-glibc-217.tar.gz上传文件到服务器,并解压到文件夹/opt将文件夹</div> </li> <li><a href="/article/1831282434600169472.htm" title="Laravel小程序学习日记2018-07-10" target="_blank">Laravel小程序学习日记2018-07-10</a> <span class="text-muted">Purson</span> <div>有那么一个星期没有写日记了,因为答应了Sheldon15号前完成小程序的学习,很多东西都来不及总结,但是由于有vuejs的基础,wepy的使用是比较清楚的。今天为什么记录主要有1个原因,就是我在laravel小程序课程里面提交的修改被合并了,这次不是一两个错字那么简单,是一个小方法,这里截图庆祝一下。投稿小记录在wepy里面异步函数更新数据,一定要在后面加个this.$apply()</div> </li> <li><a href="/article/1831268329407475712.htm" title="uni-app启动本地开发环境,修改默认端口号" target="_blank">uni-app启动本地开发环境,修改默认端口号</a> <span class="text-muted">徐同保</span> <a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a> <div>vite.config.js:import{defineConfig}from"vite";importunifrom"@dcloudio/vite-plugin-uni";//https://vitejs.dev/config/exportdefaultdefineConfig({server:{port:3006,},plugins:[uni()],});人工智能学习网站https://cha</div> </li> <li><a href="/article/22.htm" title="redis学习笔记——不仅仅是存取数据" target="_blank">redis学习笔记——不仅仅是存取数据</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/returnSource/1.htm">returnSource</a><a class="tag" taget="_blank" href="/search/expire%2Fdel/1.htm">expire/del</a><a class="tag" taget="_blank" href="/search/incr%2Flpush/1.htm">incr/lpush</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%86%E5%8C%BA/1.htm">数据库分区</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷)   1、关于JedisPool.returnSource(Jedis jeids)   这个方法是从red</div> </li> <li><a href="/article/149.htm" title="SQL性能优化-持续更新中。。。。。。" target="_blank">SQL性能优化-持续更新中。。。。。。</a> <span class="text-muted">atongyeye</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>1 通过ROWID访问表--索引 你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高. 2 共享SQL语句--相同的sql放入缓存 3 选择最有效率的表</div> </li> <li><a href="/article/276.htm" title="[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善" target="_blank">[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a> <div>      如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢? &n</div> </li> <li><a href="/article/403.htm" title="lvs- real" target="_blank">lvs- real</a> <span class="text-muted">男人50</span> <a class="tag" taget="_blank" href="/search/LVS/1.htm">LVS</a> <div>#!/bin/bash # # Script to start LVS DR real server. # description: LVS DR real server # #.  /etc/rc.d/init.d/functions VIP=10.10.6.252 host='/bin/hostname' case "$1" in sta</div> </li> <li><a href="/article/530.htm" title="生成公钥和私钥" target="_blank">生成公钥和私钥</a> <span class="text-muted">oloz</span> <a class="tag" taget="_blank" href="/search/DSA/1.htm">DSA</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%8A%A0%E5%AF%86/1.htm">安全加密</a> <div>package com.msserver.core.util; import java.security.KeyPair; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; public class SecurityUtil { </div> </li> <li><a href="/article/657.htm" title="UIView 中加入的cocos2d,背景透明" target="_blank">UIView 中加入的cocos2d,背景透明</a> <span class="text-muted">374016526</span> <a class="tag" taget="_blank" href="/search/cocos2d/1.htm">cocos2d</a><a class="tag" taget="_blank" href="/search/glClearColor/1.htm">glClearColor</a> <div>要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll</div> </li> <li><a href="/article/784.htm" title="mysql常用命令" target="_blank">mysql常用命令</a> <span class="text-muted">香水浓</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>连接数据库 mysql -u troy -ptroy 备份表 mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql 恢复表(与恢复数据库命令相同) mysql -u troy -ptroy mm_database < user.sql 备份数据库 mysqldump -u troy -ptroy</div> </li> <li><a href="/article/911.htm" title="我的架构经验系列文章 - 后端架构 - 系统层面" target="_blank">我的架构经验系列文章 - 后端架构 - 系统层面</a> <span class="text-muted">agevs</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>系统层面: 高可用性 所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速</div> </li> <li><a href="/article/1038.htm" title="利用ant进行远程tomcat部署" target="_blank">利用ant进行远程tomcat部署</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a> <div>在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下: 1.配置tomcat的用户角色</div> </li> <li><a href="/article/1165.htm" title="获取复利总收入" target="_blank">获取复利总收入</a> <span class="text-muted">baalwolf</span> <a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96/1.htm">获取</a> <div>       public static void main(String args[]){         int money=200;         int year=1;         double rate=0.1; &</div> </li> <li><a href="/article/1292.htm" title="eclipse.ini解释" target="_blank">eclipse.ini解释</a> <span class="text-muted">BigBird2012</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a> <div>大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。 Overview 1、Eclipse.ini的作用 Eclipse startup is controlled by th</div> </li> <li><a href="/article/1419.htm" title="AngularJS实现分页功能" target="_blank">AngularJS实现分页功能</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a> <div>        对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。   &nbs</div> </li> <li><a href="/article/1546.htm" title="[Maven学习笔记三]Maven archetype" target="_blank">[Maven学习笔记三]Maven archetype</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/ArcheType/1.htm">ArcheType</a> <div>archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等.   mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式,   mvn archetype   1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener</div> </li> <li><a href="/article/1673.htm" title="【Java命令三】jps" target="_blank">【Java命令三】jps</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Java%E5%91%BD%E4%BB%A4/1.htm">Java命令</a> <div>jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看   [hadoop@hadoop bin]$ jps -help usage: jps [-help] jps [-q] [-mlvV] [<hostid>] Definitions: <hostid>: <hostname>[:</div> </li> <li><a href="/article/1800.htm" title="ZABBIX2.2 2.4 等各版本之间的兼容性" target="_blank">ZABBIX2.2 2.4 等各版本之间的兼容性</a> <span class="text-muted">ronin47</span> <div>zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容 zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p</div> </li> <li><a href="/article/1927.htm" title="unity 3d还是cocos2dx哪个适合游戏?" target="_blank">unity 3d还是cocos2dx哪个适合游戏?</a> <span class="text-muted">brotherlamp</span> <a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a><a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a> <div>unity 3d还是cocos2dx哪个适合游戏? 问:unity 3d还是cocos2dx哪个适合游戏? 答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2, </div> </li> <li><a href="/article/2054.htm" title="百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序" target="_blank">百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/%E6%8B%9B%E8%81%98/1.htm">招聘</a> <div> import java.util.Arrays; /** * 最早是在陈利人老师的微博看到这道题: * #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K * 设计一个排序算法。It should be faster than O(n*lgn)。</div> </li> <li><a href="/article/2181.htm" title="获取checkbox复选框的值" target="_blank">获取checkbox复选框的值</a> <span class="text-muted">chiangfai</span> <a class="tag" taget="_blank" href="/search/checkbox/1.htm">checkbox</a> <div><title>CheckBox</title> <script type = "text/javascript"> doGetVal: function doGetVal() { //var fruitName = document.getElementById("apple").value;//根据</div> </li> <li><a href="/article/2308.htm" title="MySQLdb用户指南" target="_blank">MySQLdb用户指南</a> <span class="text-muted">chenchao051</span> <a class="tag" taget="_blank" href="/search/mysqldb/1.htm">mysqldb</a> <div>原网页被墙,放这里备用。 MySQLdb User's Guide Contents Introduction Installation _mysql MySQL C API translation MySQL C API function mapping Some _mysql examples MySQLdb </div> </li> <li><a href="/article/2435.htm" title="HIVE 窗口及分析函数" target="_blank">HIVE 窗口及分析函数</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0/1.htm">窗口函数</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%9E%90%E5%87%BD%E6%95%B0/1.htm">分析函数</a> <div>窗口函数应用场景: (1)用于分区排序 (2)动态Group By (3)Top N (4)累计计算 (5)层次查询 一、分析函数 用于等级、百分点、n分片等。 函数             说明 RANK()     &nbs</div> </li> <li><a href="/article/2562.htm" title="PHP ZipArchive 实现压缩解压Zip文件" target="_blank">PHP ZipArchive 实现压缩解压Zip文件</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/zip/1.htm">zip</a> <div> PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。 一、解压缩zip文件 01 02 03 04 05 06 07 08 09 10 11 </div> </li> <li><a href="/article/2689.htm" title="精彩英语贺词" target="_blank">精彩英语贺词</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD/1.htm">英语</a> <div>I'm always here              我会一直在这里支持你                &nb</div> </li> <li><a href="/article/2816.htm" title="基于Java注解的Spring的IoC功能" target="_blank">基于Java注解的Spring的IoC功能</a> <span class="text-muted">e200702084</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/Office/1.htm">Office</a> <div>                                  </div> </li> <li><a href="/article/2943.htm" title="java模拟post请求" target="_blank">java模拟post请求</a> <span class="text-muted">geeksun</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。 此处用HttpComponents的httpclient来完成使命。 import org.apache.http.HttpEntity ; import org.apache.http.HttpRespon</div> </li> <li><a href="/article/3070.htm" title="Swift语法之 ---- ?和!区别" target="_blank">Swift语法之 ---- ?和!区别</a> <span class="text-muted">hongtoushizi</span> <a class="tag" taget="_blank" href="/search/%3F/1.htm">?</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/%21/1.htm">!</a> <div>转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html   Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错: var stringValue : String //</div> </li> <li><a href="/article/3197.htm" title="centos7安装jdk1.7" target="_blank">centos7安装jdk1.7</a> <span class="text-muted">jisonami</span> <a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>安装JDK1.7 步骤1、解压tar包在当前目录 [root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz 步骤2:配置环境变量 在etc/profile文件下添加 export JAVA_HOME=/usr/java/jdk1.7.0_75 export CLASSPATH=/usr/java/jdk1.7.0_75/lib </div> </li> <li><a href="/article/3324.htm" title="数据源架构模式之数据映射器" target="_blank">数据源架构模式之数据映射器</a> <span class="text-muted">home198979</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%98%A0%E5%B0%84%E5%99%A8/1.htm">数据映射器</a><a class="tag" taget="_blank" href="/search/datamapper/1.htm">datamapper</a> <div>前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。   一、概念 数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。 &nb</div> </li> <li><a href="/article/3451.htm" title="在Python中使用MYSQL" target="_blank">在Python中使用MYSQL</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>缘由   近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到 数据库中。   了解到 Python在这方面有优势,便选用之。   由于我有台 server上面安装有 mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里 记录一下,大家共勉。    python中mysql的调用    百度之后能够通过MySQLdb进行数据库操作。</div> </li> <li><a href="/article/3578.htm" title="单例模式" target="_blank">单例模式</a> <span class="text-muted">hxl1988_0311</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BB%B6/1.htm">单件</a> <div>package com.sosop.designpattern.singleton; /* * 单件模式:保证一个类必须只有一个实例,并提供全局的访问点 * * 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件 * * 必须考虑到并发情况下创建了多个实例对象 * */ /** * 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率</div> </li> <li><a href="/article/3705.htm" title="27种迹象显示你应该辞掉程序员的工作" target="_blank">27种迹象显示你应该辞掉程序员的工作</a> <span class="text-muted">vipshichg</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>