[PBlog] 使用 Java 写的用 markdown 做为写作语法的单页应用博客,已开源 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Lpl
V2EX    程序员

[PBlog] 使用 Java 写的用 markdown 做为写作语法的单页应用博客,已开源

  •  2
     
  •   Lpl
    penglongli 2016-05-04 20:39:12 +08:00 5453 次点击
    这是一个创建于 3517 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写在题前

    很感谢 @Threezj 同学给的建议,已经使用 AngularJS 把 PC 端的页面给换成了单页应用

    NOTE : 下边的文章管理地址希望各位手下留情,做演示用的...别乱改

    地址

    预览地址: Pelin 的个人博客

    文章管理: PBlog-文章管理 由于使用的 nginx ,所以这个博客系统没有登录之类的,直接使用 nginx 做的权限控制。现在为了做演示,把权限控制去掉了

    源代码地址:PBlog-Source

    简介

    PBlog 基于 Spring Framework + Mybatis ,前端使用 Less 作为预处理样式, marked.js 来处理 markdown 格式内容,并且通过 AngularJS 控制视图跳转实现 PC 端单页应用, gulp 作为前端自动化构建工具; 移动端页面采用 HTML5 + CSS3 标准实现。

    The application used following open-source projects:

    开发环境:

    • JDK: java version "1.7.0_80"
    • JVM: HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
    • MySQL: 5.6.24
    • IDE: IntelliJ IDEA 15.0.2

    安装使用

    项目 war 包目录及使用方式:PBlog-releases

    进度

    Completed:

    • 首页 (PC 端和移动端)
    • 归档 (PC 端和移动端)
    • 分类 (PC 端和移动端)
    • 关于 (PC 端和移动端)
    • 文章管理

    TODO List

    • 修复一些页面显示数据的 bug
    • 增加日志记录
    • 读书
    • 日记
    • 七牛图片上传
    • 单元测试覆盖(coveralls)

    结尾

    后端的 Java 代码没什么很新颖的东西,还是普通的增删改查,对于初学者来说很容易理解。前端的东西费了很多功夫,没有设计图就参(chao)考(xi)别人的网站,所以如果诸位有发现上边某个样式很像你的网站,请不用怀疑,应该就是你的。

    目前来说,还有挺大一部分功能没有能够完善,而且项目目录比较混乱。但是得忙论文了,忙论文期间我慢慢地会给梳理一下,并且把 wiki 写出来。

    很欢迎大家提 Pr 和 Issue ,只要你感觉有哪点不合适,都可以提出来。说到重点了,厚着脸皮求个 star (=^^=)ノ

    第 1 条附言    2016-05-04 22:10:40 +08:00
    文章管理的那个,还没有做输入校验和表单提交校验,所以测试的话就按照正常测试吧。精力都放在了前端的页面上了,有兴趣的给个 star 也好啊= =
    19 条回复    2016-05-06 01:01:30 +08:00
    bdbai
        1
    bdbai  
       2016-05-04 21:20:14 +08:00 via Android
    看起来蛮棒的,后台管理秒开啊。
    话说 Markdown 有原生斜体强调的语法,为什么要用 HTML 呢?我帮你改了前几个,希望楼下或者楼主改完它 :)
    Threezj
        2
    Threezj  
       2016-05-04 21:30:19 +08:00
    突然看到我的名字吓了一跳。我刚学 java 后端不久。也在考虑 java web 可以做一个什么有趣点的项目,感觉小项目的话,后端代码就是增删改查。一些高并发的项目,作为学生又接触不到。
    Lpl
        3
    Lpl  
    OP
       2016-05-04 22:09:15 +08:00
    @bdbai 多谢~我没想着用斜体,我把内容中的<em>标签内容都设置为正常了..不习惯那个样式

    @Threezj 我以前不知道单页应用,所以通过你帮忙换成了单页应用了。小项目确实是增删改查= =
    bdbai
        4
    bdbai  
       2016-05-04 22:16:03 +08:00 via Android
    @Lpl 你可以试下反引号包裹,比如
    `Gulp`
    Lpl
        5
    Lpl  
    OP
       2016-05-04 22:43:46 +08:00   1
    @bdbai soga ,单引号包括后会被解析成<code>格式的, 下滑杠包括的会被解析成<em>, 这个 get 到了~
    ooTwToo
        6
    ooTwToo  
       2016-05-04 22:54:49 +08:00 via iPhone
    不错不错,以前也有过此类想法。。话说你前后端完全分离了吗? 感觉前端构建工具跟 java 一起用,总感觉很别扭。
    Lpl
        7
    Lpl  
    OP
       2016-05-04 22:59:35 +08:00
    @ooTwToo 没有做分离...我感觉也有点别扭。我当时写的时候没想到用自动化构建工具。也就是离职后感觉公司用 gulp 做构建实现前后端分离不错,就借鉴了一半,没借鉴另一半 (-_-)
    ooTwToo
        8
    ooTwToo  
       2016-05-04 23:51:43 +08:00 via iPhone
    @Lpl 噢,话说前端构建这块我还需要花时间恶补一下了。另外你可以表示一下 maven 的 profile 来打包不同环境的配置文件。还有,现在静态博客很受欢迎~你可以试着分离出一个纯前端的 blog~
    Lpl
        9
    Lpl  
    OP
       2016-05-04 23:59:27 +08:00
    @ooTwToo 不用啊,不同环境只要安装 maven 3.0+版本的话打包命令都一样~ 静态博客的话我完全写完了,我给分离出来,不过我写的不是响应式的,是写了两套前端的页面,那时候估计要改样式
    tedd
        10
    tedd  
       2016-05-05 07:51:30 +08:00 via iPhone
    不太懂 java spring ,请问前台与后台的通信是基于 java spring 提供的 rest api 接口进行的吗?
    okampfer
        11
    okampfer &nbp;
       2016-05-05 08:38:44 +08:00
    我也是原来做后端转而自学前端的,想达到前后端分离、同一套 api 供网页和移动端使用。前端折腾起来很有趣,但花样翻新太快,现自学 react ,想用 react+redux 等实现单页应用,但是 es6 、 babel 、 webpack 那一套还正在边看文档边做的挣扎中……
    Lpl
        12
    Lpl  
    OP
       2016-05-05 11:29:31 +08:00
    @tedd PC 端写的是基于 Spring MVC 的 @ResponsBody 注解返回 json 格式的数据,然后 AngularJS 做视图控制转发; 移动端的话把数据写在 Spring MVC 的 model 中,然后返回控制视图,在 jsp 页面使用 jstl 表达式把数据展示出来。

    @okampfer 前端写起来好麻烦...如果没有设计图啥的,还得去抄人家的。我用的不是同一套 api ,移动端和 PC 端用的东西不一样, PC 端用的 rest 风格返回 json 数据,移动端是直接返回了视图
    tedd
        13
    tedd  
       2016-05-05 12:37:03 +08:00 via iPhone
    @Lpl 感谢说明,最近我也想学习下 spring ,请问有什么材料推荐吗?我的 java 水平就是停留在学校语法层面,工作后都没有用过
    Lpl
        14
    Lpl  
    OP
       2016-05-05 13:15:03 +08:00
    @tedd 不客气~ 推荐你看一本书《 Spring in action 》中文版的,然后就是搜搜别人写的 demo 之类的,看看他们的源代码,间隙看看 Spring 的官方文档( http://projects.spring.io/spring-framework/)。期间肯定会遇到问题,得耐得下心,一个个解决,这也能够培养解决问题的能力。我感觉是这样的
    funky
        15
    funky  
       2016-05-05 23:58:29 +08:00
    貌似图片什么的还是需要在 Markdown 里面引用外链么,建议加上在 Markdown 里面加上引用本地图片的
    funky
        16
    funky  
       2016-05-06 00:02:04 +08:00
    才发现貌似没有本地图片上传的功能:)
    Lpl
        17
    Lpl  
    OP
       2016-05-06 00:05:42 +08:00 via Android
    @funky 嗯,这个目前在写,准备加上七牛的上传,到时候替换下 key 就行了。本地上传的话,太费服务器了。应该这个月下旬能把所有的都写好,可以加个 star 关注下(我感觉我在卖力吆喝(。。))
    funky
        18
    funky  
       2016-05-06 00:17:40 +08:00
    @Lpl 上七牛存储的话没有七牛帐号的就 go die 了。虽然我觉得怎么简单怎么来。
    Lpl
        19
    Lpl  
    OP
       2016-05-06 01:01:30 +08:00
    @funky 嗯,也确实有担心这个问题。等写到那的时候会考虑上传到相对路径下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2526 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:07 PVG 15:07 LAX 23:07 JFK 02:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86