安装
Zeal 支持 200 多种常见技术文档的离线下载和安装,并可以离线搜索查看。这对于需要经常访问国外技术文档但网络环境不好的小伙伴来说,Zeal 是绝对真香。
image-20211006172623674.pngZeal 的官方地址:https://zealdocs.org,支持 Windows、Linux、MacOS,Windows 版支持免安装的 Portable 版本。
基本使用
点击 Zeal 的 Tools 菜单中的 Available 菜单项,Zeal 会自动查找可以下载的文档, 搜索需要的文档即可下载到本地,然后就可以离线搜索查看了,就是这么方便。
image-20211006172625988.png解决下载速度问题
Zeal 的文档都保存在国外的服务器上,国内进行访问速度非常慢,速度极慢,而且容易中断,甚至总是连接超时。下面重点介绍如何手动下载文档。
点击 Zeal 的 Tools 菜单中的 Available 菜单项,通过抓包得到一个 Zeal 的访问连接: http://api.zealdocs.org/v1/docsets,该连接就是 Zeal 在请求可用文档列表的地址,返回的是一个 JSON 文本。好像通过手机的移动网络访问该地址可以拿到返回的 JSON 报文。 保存该 JSON 文件之后在电脑上打开发现其结构如下:
image-20211006174149328.pngZeal 离线文档的下载链接格式是:
http://{city_name}.kapeli.com/feeds/{name}.tgz
city_anme: 是服务器所在的城市
name: 是刚刚找好的要下载文档的name值
服务器所在的城市如下:
frankfurt, london, newyork, sanfrancisco, singapore, sydney, tokyo
笔者大致测试了几个服务器的下载速度:
快——> 慢排序
http://tokyo.kapeli.com/feeds/{name}.tgz
http://singapore.kapeli.com/feeds/{name}.tgz
http://sanfrancisco.kapeli.com/feeds/{name}.tgz
http://frankfurt.kapeli.com/feeds/{name}.tgz
http://newyork.kapeli.com/feeds/{name}.tgz
http://sydney.kapeli.com/feeds/{name}.tgz
http://london.kapeli.com/feeds/{name}.tgz
如上图所示,把你要下载文档的 name 值替换掉下面的链接的 {name} 即可。下面是笔者通过访问 http://api.zealdocs.org/v1/docsets,保存所下载的 JSON 文件,通过代码按照 JSON Path 从中解析出 name 列表,然后拼接出的所有文档压缩包的下载地址:
http://tokyo.kapeli.com/feeds/ActionScript.tgz
http://tokyo.kapeli.com/feeds/Akka.tgz
http://tokyo.kapeli.com/feeds/Android.tgz
http://tokyo.kapeli.com/feeds/Angular.tgz
http://tokyo.kapeli.com/feeds/AngularJS.tgz
http://tokyo.kapeli.com/feeds/Ansible.tgz
http://tokyo.kapeli.com/feeds/Apache_HTTP_Server.tgz
http://tokyo.kapeli.com/feeds/Appcelerator_Titanium.tgz
http://tokyo.kapeli.com/feeds/AppleScript.tgz
http://tokyo.kapeli.com/feeds/Arduino.tgz
http://tokyo.kapeli.com/feeds/AWS_JavaScript.tgz
http://tokyo.kapeli.com/feeds/BackboneJS.tgz
http://tokyo.kapeli.com/feeds/Bash.tgz
http://tokyo.kapeli.com/feeds/Boost.tgz
http://tokyo.kapeli.com/feeds/Bootstrap_2.tgz
http://tokyo.kapeli.com/feeds/Bootstrap_3.tgz
http://tokyo.kapeli.com/feeds/Bootstrap_4.tgz
http://tokyo.kapeli.com/feeds/Bootstrap_5.tgz
http://tokyo.kapeli.com/feeds/Bourbon.tgz
http://tokyo.kapeli.com/feeds/C.tgz
http://tokyo.kapeli.com/feeds/C++.tgz
http://tokyo.kapeli.com/feeds/CakePHP.tgz
http://tokyo.kapeli.com/feeds/Cappuccino.tgz
http://tokyo.kapeli.com/feeds/Chai.tgz
http://tokyo.kapeli.com/feeds/Chef.tgz
http://tokyo.kapeli.com/feeds/Clojure.tgz
http://tokyo.kapeli.com/feeds/CMake.tgz
http://tokyo.kapeli.com/feeds/Cocos2D.tgz
http://tokyo.kapeli.com/feeds/Cocos2D-X.tgz
http://tokyo.kapeli.com/feeds/Cocos3D.tgz
http://tokyo.kapeli.com/feeds/CodeIgniter.tgz
http://tokyo.kapeli.com/feeds/CoffeeScript.tgz
http://tokyo.kapeli.com/feeds/ColdFusion.tgz
http://tokyo.kapeli.com/feeds/Common_Lisp.tgz
http://tokyo.kapeli.com/feeds/Compass.tgz
http://tokyo.kapeli.com/feeds/Cordova.tgz
http://tokyo.kapeli.com/feeds/Corona.tgz
http://tokyo.kapeli.com/feeds/CouchDB.tgz
http://tokyo.kapeli.com/feeds/Craft.tgz
http://tokyo.kapeli.com/feeds/CSS.tgz
http://tokyo.kapeli.com/feeds/D3JS.tgz
http://tokyo.kapeli.com/feeds/Dart.tgz
http://tokyo.kapeli.com/feeds/Django.tgz
http://tokyo.kapeli.com/feeds/Docker.tgz
http://tokyo.kapeli.com/feeds/Doctrine_ORM.tgz
http://tokyo.kapeli.com/feeds/Dojo.tgz
http://tokyo.kapeli.com/feeds/Drupal_7.tgz
http://tokyo.kapeli.com/feeds/Drupal_8.tgz
http://tokyo.kapeli.com/feeds/Drupal_9.tgz
http://tokyo.kapeli.com/feeds/ElasticSearch.tgz
http://tokyo.kapeli.com/feeds/Elixir.tgz
http://tokyo.kapeli.com/feeds/Emacs_Lisp.tgz
http://tokyo.kapeli.com/feeds/EmberJS.tgz
http://tokyo.kapeli.com/feeds/Emmet.tgz
http://tokyo.kapeli.com/feeds/Erlang.tgz
http://tokyo.kapeli.com/feeds/Express.tgz
http://tokyo.kapeli.com/feeds/ExpressionEngine.tgz
http://tokyo.kapeli.com/feeds/ExtJS.tgz
http://tokyo.kapeli.com/feeds/Flask.tgz
http://tokyo.kapeli.com/feeds/Font_Awesome.tgz
http://tokyo.kapeli.com/feeds/Foundation.tgz
http://tokyo.kapeli.com/feeds/GLib.tgz
http://tokyo.kapeli.com/feeds/Go.tgz
http://tokyo.kapeli.com/feeds/Gradle_DSL.tgz
http://tokyo.kapeli.com/feeds/Gradle_Java_API.tgz
http://tokyo.kapeli.com/feeds/Gradle_User_Guide.tgz
http://tokyo.kapeli.com/feeds/Grails.tgz
http://tokyo.kapeli.com/feeds/Groovy.tgz
http://tokyo.kapeli.com/feeds/Groovy_JDK.tgz
http://tokyo.kapeli.com/feeds/Grunt.tgz
http://tokyo.kapeli.com/feeds/Gulp.tgz
http://tokyo.kapeli.com/feeds/Haml.tgz
http://tokyo.kapeli.com/feeds/Handlebars.tgz
http://tokyo.kapeli.com/feeds/Haskell.tgz
http://tokyo.kapeli.com/feeds/HTML.tgz
http://tokyo.kapeli.com/feeds/Ionic.tgz
http://tokyo.kapeli.com/feeds/Jasmine.tgz
http://tokyo.kapeli.com/feeds/Java_EE6.tgz
http://tokyo.kapeli.com/feeds/Java_EE7.tgz
http://tokyo.kapeli.com/feeds/Java_EE8.tgz
http://tokyo.kapeli.com/feeds/Java_SE10.tgz
http://tokyo.kapeli.com/feeds/Java_SE11.tgz
http://tokyo.kapeli.com/feeds/Java_SE12.tgz
http://tokyo.kapeli.com/feeds/Java_SE13.tgz
http://tokyo.kapeli.com/feeds/Java_SE14.tgz
http://tokyo.kapeli.com/feeds/Java_SE15.tgz
http://tokyo.kapeli.com/feeds/Java_SE16.tgz
http://tokyo.kapeli.com/feeds/Java_SE6.tgz
http://tokyo.kapeli.com/feeds/Java_SE7.tgz
http://tokyo.kapeli.com/feeds/Java_SE8.tgz
http://tokyo.kapeli.com/feeds/Java_SE9.tgz
http://tokyo.kapeli.com/feeds/JavaFX.tgz
http://tokyo.kapeli.com/feeds/JavaScript.tgz
http://tokyo.kapeli.com/feeds/Jekyll.tgz
http://tokyo.kapeli.com/feeds/Jinja.tgz
http://tokyo.kapeli.com/feeds/Joomla.tgz
http://tokyo.kapeli.com/feeds/jQuery.tgz
http://tokyo.kapeli.com/feeds/jQuery_Mobile.tgz
http://tokyo.kapeli.com/feeds/jQuery_UI.tgz
http://tokyo.kapeli.com/feeds/Julia.tgz
http://tokyo.kapeli.com/feeds/KnockoutJS.tgz
http://tokyo.kapeli.com/feeds/Kobold2D.tgz
http://tokyo.kapeli.com/feeds/Laravel.tgz
http://tokyo.kapeli.com/feeds/LaTeX.tgz
http://tokyo.kapeli.com/feeds/Less.tgz
http://tokyo.kapeli.com/feeds/Lo-Dash.tgz
http://tokyo.kapeli.com/feeds/Lua_5.1.tgz
http://tokyo.kapeli.com/feeds/Lua_5.2.tgz
http://tokyo.kapeli.com/feeds/Lua_5.3.tgz
http://tokyo.kapeli.com/feeds/Lua_5.4.tgz
http://tokyo.kapeli.com/feeds/MarionetteJS.tgz
http://tokyo.kapeli.com/feeds/Markdown.tgz
http://tokyo.kapeli.com/feeds/Matplotlib.tgz
http://tokyo.kapeli.com/feeds/Meteor.tgz
http://tokyo.kapeli.com/feeds/Mocha.tgz
http://tokyo.kapeli.com/feeds/MomentJS.tgz
http://tokyo.kapeli.com/feeds/MongoDB.tgz
http://tokyo.kapeli.com/feeds/Mongoose.tgz
http://tokyo.kapeli.com/feeds/Mono.tgz
http://tokyo.kapeli.com/feeds/MooTools.tgz
http://tokyo.kapeli.com/feeds/MySQL.tgz
http://tokyo.kapeli.com/feeds/Neat.tgz
http://tokyo.kapeli.com/feeds/NET_Framework.tgz
http://tokyo.kapeli.com/feeds/Nginx.tgz
http://tokyo.kapeli.com/feeds/NodeJS.tgz
http://tokyo.kapeli.com/feeds/NumPy.tgz
http://tokyo.kapeli.com/feeds/OCaml.tgz
http://tokyo.kapeli.com/feeds/OpenCV.tgz
http://tokyo.kapeli.com/feeds/OpenGL_2.tgz
http://tokyo.kapeli.com/feeds/OpenGL_3.tgz
http://tokyo.kapeli.com/feeds/OpenGL_4.tgz
http://tokyo.kapeli.com/feeds/Pandas.tgz
http://tokyo.kapeli.com/feeds/Perl.tgz
http://tokyo.kapeli.com/feeds/Phalcon.tgz
http://tokyo.kapeli.com/feeds/PhoneGap.tgz
http://tokyo.kapeli.com/feeds/PHP.tgz
http://tokyo.kapeli.com/feeds/PHPUnit.tgz
http://tokyo.kapeli.com/feeds/Play_Java.tgz
http://tokyo.kapeli.com/feeds/Play_Scala.tgz
http://tokyo.kapeli.com/feeds/Polymer.dart.tgz
http://tokyo.kapeli.com/feeds/PostgreSQL.tgz
http://tokyo.kapeli.com/feeds/Processing.tgz
http://tokyo.kapeli.com/feeds/PrototypeJS.tgz
http://tokyo.kapeli.com/feeds/Pug.tgz
http://tokyo.kapeli.com/feeds/Puppet.tgz
http://tokyo.kapeli.com/feeds/Python_2.tgz
http://tokyo.kapeli.com/feeds/Python_3.tgz
http://tokyo.kapeli.com/feeds/Qt_4.tgz
http://tokyo.kapeli.com/feeds/Qt_5.tgz
http://tokyo.kapeli.com/feeds/Qt_6.tgz
http://tokyo.kapeli.com/feeds/R.tgz
http://tokyo.kapeli.com/feeds/Racket.tgz
http://tokyo.kapeli.com/feeds/React.tgz
http://tokyo.kapeli.com/feeds/Redis.tgz
http://tokyo.kapeli.com/feeds/RequireJS.tgz
http://tokyo.kapeli.com/feeds/Ruby.tgz
http://tokyo.kapeli.com/feeds/Ruby_2.tgz
http://tokyo.kapeli.com/feeds/Ruby_3.tgz
http://tokyo.kapeli.com/feeds/Ruby_on_Rails_3.tgz
http://tokyo.kapeli.com/feeds/Ruby_on_Rails_4.tgz
http://tokyo.kapeli.com/feeds/Ruby_on_Rails_5.tgz
http://tokyo.kapeli.com/feeds/Ruby_on_Rails_6.tgz
http://tokyo.kapeli.com/feeds/RubyMotion.tgz
http://tokyo.kapeli.com/feeds/Rust.tgz
http://tokyo.kapeli.com/feeds/SailsJS.tgz
http://tokyo.kapeli.com/feeds/SaltStack.tgz
http://tokyo.kapeli.com/feeds/Sass.tgz
http://tokyo.kapeli.com/feeds/Scala.tgz
http://tokyo.kapeli.com/feeds/SciPy.tgz
http://tokyo.kapeli.com/feeds/Semantic_UI.tgz
http://tokyo.kapeli.com/feeds/Sencha_Touch.tgz
http://tokyo.kapeli.com/feeds/Sinon.tgz
http://tokyo.kapeli.com/feeds/Smarty.tgz
http://tokyo.kapeli.com/feeds/Sparrow.tgz
http://tokyo.kapeli.com/feeds/Spring_Framework.tgz
http://tokyo.kapeli.com/feeds/SQLAlchemy.tgz
http://tokyo.kapeli.com/feeds/SQLite.tgz
http://tokyo.kapeli.com/feeds/Statamic.tgz
http://tokyo.kapeli.com/feeds/Stylus.tgz
http://tokyo.kapeli.com/feeds/Susy.tgz
http://tokyo.kapeli.com/feeds/SVG.tgz
http://tokyo.kapeli.com/feeds/Swift.tgz
http://tokyo.kapeli.com/feeds/Symfony.tgz
http://tokyo.kapeli.com/feeds/Tcl.tgz
http://tokyo.kapeli.com/feeds/Tornado.tgz
http://tokyo.kapeli.com/feeds/Twig.tgz
http://tokyo.kapeli.com/feeds/Twisted.tgz
http://tokyo.kapeli.com/feeds/TypeScript.tgz
http://tokyo.kapeli.com/feeds/TYPO3.tgz
http://tokyo.kapeli.com/feeds/UnderscoreJS.tgz
http://tokyo.kapeli.com/feeds/Unity_3D.tgz
http://tokyo.kapeli.com/feeds/Vagrant.tgz
http://tokyo.kapeli.com/feeds/Vim.tgz
http://tokyo.kapeli.com/feeds/VMware_vSphere.tgz
http://tokyo.kapeli.com/feeds/VueJS.tgz
http://tokyo.kapeli.com/feeds/WordPress.tgz
http://tokyo.kapeli.com/feeds/Xamarin.tgz
http://tokyo.kapeli.com/feeds/Xojo.tgz
http://tokyo.kapeli.com/feeds/XSLT.tgz
http://tokyo.kapeli.com/feeds/Yii.tgz
http://tokyo.kapeli.com/feeds/YUI.tgz
http://tokyo.kapeli.com/feeds/Zend_Framework_1.tgz
http://tokyo.kapeli.com/feeds/Zend_Framework_2.tgz
http://tokyo.kapeli.com/feeds/Zend_Framework_3.tgz
http://tokyo.kapeli.com/feeds/ZeptoJS.tgz
复制上面所有拼接好的地址,点击迅雷中的“新建”按钮,直接粘贴就可以批量下载了。如下图所示。
image-20211006175011710.png将下载完的文档解压(直接解压后目录名格式为{name}.docset)放进 Zeal 所设值的离线文档存放位置后重启 Zeal 即可。文档存放位置可在 Zeal 的 Edit 菜单中 Preferences 菜单项中的 General 标签页底部的 Directory 中设置。
网友评论