Git Product home page Git Product logo

airpub's Introduction

Airpub logo

Airpub NPM version

Airpub 是基于 Angular.js 搭建,多说 数据驱动的纯前端写作工具。

基于多说现有社交网络账户体系与健壮 API,Airpub 能够托管在任何静态资源服务器上,例如 GitHub Pages、又拍云储存、七牛云储存或使用自定义的 FTP 工具上传到任何 VPS 或虚拟主机中使用,为最终用户提供便捷流畅,优质轻量的博客写作与阅读体验。访问官方网站

快速开始

Airpub 功能特色


已实现的功能特色:

  • 支持 Markdown 写作
  • 支持图片上传,目前支持上传到 又拍云
  • 支持插入代码以及代码高亮
  • 支持基于多说的社交网络账户登录
  • 基于 Angular Directive 规范的 add-on 系统
  • 基于 bower 管理的主题系统
  • 符合规范的,更好的 Angular SEO 实现
  • 更好的移动端登录体验,去掉多说登录中间页面,跳转到相应社交网站登录页面
  • 拆分后台文件与逻辑到独立页面,缩减普通用户请求资源大小
  • 支持友好地分享到微信信息流、朋友圈

Todo List:

  • 精细化压缩 bootstrap.css,实现更小的页面资源加载。
  • 解决前端鉴权产生的冗余依赖问题,消除对 angular-md5angular-base64 等库的依赖。
  • 实现单一文章多账户编辑的逻辑与界面,设计基本的 ACL 机制。

如何安装


自动安装

使用 Airpub CLI Installer 来安装 Airpub 的稳定版本:

$ [sudo] npm install -g airpub-installer

新建站点目录:

$ mkdir my-airpub-blog && cd my-airpub-blog

然后执行操作将相关的依赖全部安装完毕:

$ airpub install

airpub installer 将自动新建配置,仅需简单编辑

$ vi configs.js

大功告成!即可访问你的站点,开始 Airpub 简洁流畅的书写体验。

手动安装

手动安装 Airpub 也异常简单,仅需使用 Git 拉取主干代码,即可直接部署在静态资源服务器上:

// 拉取代码
$ git clone https://github.com/turingou/airpub.git

// 手动新建配置文件
$ cd airpub
$ cp configs-sample.js configs.js

// 根据提示编辑配置文件,填入多说配置与站点信息
$ vi configs.js

配置填写完毕后,我们需要安装 Airpub 依赖的前端资源文件,执行:

$ bower install 

依赖安装完成后,即可访问你的站点,开始 Airpub 简洁流畅的书写体验。

配置指南


Airpub 仅需简单配置,即可达成不错的写作与阅读效果。在 configs.js 中,你应该会注意到存在两种配置项:

  • airpubConfig: Airpub 博客系统本身的配置,包括站点名称,描述,以及其他元数据。

    • name: 站点名称
    • description: 站点描述
    • url: 线上访问地址,必须是绝对地址,用于分享
    • upyun 又拍云配置(用于上传图片)
      • bucket: 又拍云 bucket 名称,在提供 policysignature 时不需要提供
      • policy: 又拍云 policy,可通过 upyun-sign 命令行工具生成
      • signature: 又拍云 signature,可通过 upyun-sign 命令行工具生成
      • form_api_secret: 又拍云 form_api_secret,不推荐直接暴露在前端
      • host: 返回的图片的默认主机地址(可选)
      • endpoint: 默认 API 地址(可选)
  • duoshuoQuery: 你的多说站点信息,目前仅需要提供 short_name

Airpub 鉴权基于多说用户系统,这意味着你不需要对 管理员 身份进行任何配置,仅需使用生成该 short_name 相应的多说用户登录即可进行文章的新建与管理操作。

重要提示: 如你的多说 short_name 之前有在任何服务中使用过,请申请全新的多说站点以获得不同的 short_name,我们推荐你采用这样的方式来管理自己不同的多说站点之间的关系,例如 myname-wordpressmyname-airpub

重要提示: 建议你在多说管理后台(站点管理 => 设置 => 文章信息来源)开启 只接受来自服务器的文章信息请求 选项,防止非 API 请求造成的非法数据写入。

提示: 由于表单上传会暴露您的 form_api_secret,建议开启防盗链模式,并经常性更换 form_api_secret。如果你选择这种方式在前端进行摘要计算,记得在自己的页面上额外引入 js-base64js-md5 的代码库。

开发指南


Airpub 的前端依赖基于 bower 构建,工作流基于 NPM 构建。在进行 Airpub 二次开发之前,确保你有安装 Node.js、NPM 以及 bower,然后执行以下步骤:

$ cd airpub
$ bower install 
$ npm install
$ npm run dev

命令 $ npm run dev 将再 localhost:3000 运行一个静态资源服务器,并实时压缩 dist 文件。需要确保这个端口没有被占用后再执行此操作。

贡献代码


欢迎为 Airpub 贡献代码。如果你有兴趣为 Airpub 贡献代码,请先查阅本项目中的相关代码,fork 项目后,再提交 pull request。 如果你对 Airpub 计划中的主题系统或 add-on 系统感兴趣,欢迎在 issue 区提交新话题。

MIT license

Copyright (c) 2014 Guo Yu <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


docor generated using docor @ 0.1.0. brought to you by turingou

airpub's People

Contributors

guo-yu avatar jayin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

airpub's Issues

如何加入“关于我”

一般个人博客都有 about 页面,这个应该如何加比较合适呢?
1.在 airpubConfigs 加入 about_url ,然后在页面加 ng-href
2.在多说直接发 about 为标题的文章,这个我不会过滤,同时 archive 也没相关过滤。

一般会有:about,link

目前已加入 avatar_url ,不知道如何根据 duoshuoQuery.short_name 直接获得多说short_name的头像,望指点。
`

{{configs.name}}

` PS:没用过 **Angular.js** 摸着河底过河~

调用评论数目继续失败了 TUT

data-thread-key="{{article.thread_id}}"

这个所调用出来的是文章id没错了,但是跑去后台一看,thread-key都是24a37ed0-8f14-11e4-b9ba-b1c716e1f10a的形式,所以依然没办法成功调用。。。

求助 TUT (其实很有疑惑为什么要以那样的方式提交thread-key呢,用户之间应该是不存在冲突的呀

文章如何导出?

只进不出,让人很难下定决心使用,多说里导出的json没内容。

如何解决?

hi.

root@AR:/usr/local/airpub-site# bower install --allow-root
显示:
...
bower ECMDERR Failed to execute "git ls-remote --tags --heads [email protected]:visionmedia/debug.git", exit code of #128 Host key verification failed. fatal: The remote end hung up unexpectedly

Additional error details:
Host key verification failed.
fatal: The remote end hung up unexpectedly
root@AR:/usr/local/airpub-site#
root@AR:/usr/local/airpub-site# git ls-remote --tags --heads [email protected]:visionmedia/debug.git
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
root@AR:/usr/local/airpub-site#

另外,又拍云不一定非配置不可吧?

兼容性 / IE lte9 `FormData` 对象兼容性问题

无法在 airpub 中使用多说评论小组件

https://github.com/airpub/chill/blob/master/admin.html

 <editor-ninja ng-model="article.content"></editor-ninja>

这个文件中,editor-ninja已经被拆分开来了 - -
我下载的这个默认的主题,按照上面的结构制作新主题,结果后台一直不加载输入框。。。。。。。。。

然后下载了 http://airpub.qiniudn.com/themes/chill/admin.html 这个文件……发现

<textarea editor ng-model="article.content"></textarea>

。。。。。。。。。。。。。。。。。。。。

关于主题开发的一些问题

这两天在折腾遇到几个小问题:

1.在 archive.html 页面不能像 single.html 页面那样正常的调用 {{articleID}},导致无法获取当前文章的评论数等信息

2.不知道如何对于参数 uri: article.thread_id 进行扩展使用,比如需要进入这个 url 的某个锚记位置...比如直接链接到文章的 #comment 评论位置

3.个人认为样式分离的还不够彻底,DIY主题的时候明显。http://airpub.qiniudn.com/dist/airpub-dependencies.min.css ,这个样式表内似乎也有不少东西……唔最后没办法只能删掉了这句,不然很多地方我都要继续在自己的 css 里重新定义一次。reset 过了也没有用 -。-

怎样在Windows下编译生成

both in Windows and CentOS Linux
WARN: Dropping unused function argument debug [src/airpub.js:1,20]
WARN: Dropping unused function argument debug [src/filters/marked.js:1,20]
WARN: Dropping unused function argument debug [src/controllers/global.js:1,20]
WARN: Dropping unused function argument debug [src/controllers/meta.js:1,20]
WARN: Dropping unused function argument debug [src/controllers/base.js:1,20]
WARN: Dropping unused function argument err [src/controllers/archive.js:46,16]
WARN: Dropping unused function initWeixinShare [src/controllers/archive.js:59,13]
WARN: Dropping unused function argument debug [src/controllers/archive.js:1,20]
WARN: Dropping unused function argument err [src/controllers/single.js:53,16]
WARN: Dropping unused function argument debug [src/controllers/single.js:1,20]
WARN: Dropping unused function argument err [src/controllers/admin.js:48,20]
WARN: Dropping unused function argument res [src/controllers/admin.js:84,25]
WARN: Dropping unused function argument err [src/controllers/admin.js:92,18]
WARN: Dropping unused function argument err [src/controllers/admin.js:122,18]
WARN: Dropping unused function argument result [src/controllers/admin.js:138,23]
WARN: Dropping unused function argument err [src/controllers/admin.js:145,18]
WARN: Dropping unused function argument debug [src/controllers/admin.js:1,20]
WARN: Dropping unused function argument eve [src/addons/meta.js:43,26]
WARN: Dropping unreachable code [src/addons/meta.js:108,10]
WARN: Dropping unreachable code [src/addons/meta.js:109,10]
WARN: Declarations in unreachable code! [src/addons/meta.js:109,10]
WARN: Dropping unreachable code [src/addons/meta.js:110,10]
WARN: Dropping unreachable code [src/addons/meta.js:111,10]
WARN: Dropping unreachable code [src/addons/meta.js:112,10]
WARN: Dropping unreachable code [src/addons/meta.js:114,10]
WARN: Dropping unused variable query [src/addons/meta.js:109,14]

唔,依然是关于 airpub-dependencies 这个文件

真的抱歉最后还是不得不删掉这句,然后自己慢慢复制点补充

昨天发现的几个问题慢慢找到了,第一个是.thumbnail这个样式,很多时候都想要自己定义的,昨天我就是样式名撞车了,导致几个自己没定义到的属性被添加上去,比如缩略图变成了圆角

然后就是box-sizing的问题了,作者直接一句 * {} 导致我还得反过来重置一次(但是后面作者又陆续给input等标签设置了另一种,完了我也得重新设置一次……变相增加了工作量

个人的建议是这个云样式文件还可以考虑进一步精简

首先是css reset,基本上会DIY主题的都会注意到,还是交给主题作者自己来吧
然后样式,基础样式里建议就包含文章正文内部的标签样式定义就好啦,这样最省事了

本身多说就带有大量的样式,加上airpub本身自带的大量样式,在后期开发时非常繁琐
既然是DIY主题,很多地方都会有翻天覆地的变化,所以真的很少能用到原本的样式,直接脱干净了就好!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.