草庐IT

【干货】如何写一篇还算凑活的博客文章

javadog-net 2023-03-31 原文

前言

?缘由

一切源于热爱

说出来自己都感动了,差点就信了。真正起因是参加了【掘金】的启航计划,活动期间有三篇文章被推荐到首页即可获得奖品。本狗秉承瞎猫碰到死耗子的决心,最终如愿蹭了一波福利。自此有些骄傲膨胀,特来写一篇文章压压惊,以本狗实际写作流程为例,分享一下自己的写作套路与心得,更希望能以此激发广大博友的写作热情


?主要目标

实现5大重点

  1. 如何构思一篇成型的文章
  2. 掌握博客文章写作的一般流程
  3. 如何美化调优文章格式
  4. 了解写作博客常用的辅助工具
  5. 掌握各大博客平台的发布限制

?水图

秀一波实体奖品

掘金编织袋 + click午睡枕 + 稀土掘金who cares 系列咖啡杯 + 优质创作证书实体证书


?猜你喜欢

文章推荐

【事故】记一次意外把公司项目放到GitHub并被fork,如何使用DMCA下架政策保障隐私
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【ChatGPT】手摸手,带你玩转ChatGPT
【ChatGPT】SpringBoot+uniapp+uview2对接OpenAI,带你开发玩转ChatGPT
【模块分层】还不会SpringBoot项目模块分层?来这手把手教你!


正文

?写作前置问题

为什么写?在哪写?怎么写? 通过三个问题进行剖析

1️⃣.为什么要写博客?

鉴于本狗多年经验分析,大致分为以下几种情况

1. 知识积累,自我总结型 ?

通过自我反思自我总结,将自己开发过程中遇到的问题进行收集整理,记录以作后用

2. 技术大佬,炫技分享型 ?

像各大博客论坛中的博客之星,开发经验的沉淀积累大厂履历的工作分析。将自己的经验及履历总结,分享以指导后辈

3. 技术引流,广告推广型 ?

通过技术博客进行流量引入,使用付费文章或者广告形式植入,在分享的同时,尽可能的引流变现


2️⃣.把博客写在哪里?

1. 本地存储

✅优点:写作灵活,无敏感词限制
❌缺点:分享方式单一,容易丢失

2. 主流技术博客平台

✅优点:分享灵活,SEO优化好
❌缺点:敏感词限制,平台有各自推荐算法,需保证持续更新

3. 个人博客网站

✅优点:分享灵活,无敏感词限制,有自己的招牌
❌缺点:SEO优化及数据分析需自己处理


3️⃣.怎么写博客?

1. 梳理知识架构

整理技术内容,如写一篇SpringBoot技术文章,则需要梳理知识点,让看文章的人或者自己通读起来顺畅,让读者有一个大致的思维概念

2. 选择展现形式

写作特点因人而异,有的是诙谐漫画写作形式,有的是科技感文字配图,有的是搞笑搞怪的谐音梗。选择因人而异,表达本意,能吸引读者即可

3. 突出重点目标

标明目标或重点内容,让读者有侧重点

4. 组织表达语句

一百个人有一百个哈姆雷特,需要将自己理解消化的知识点转化成通俗易懂的大白话,合理输出

5. 总结归纳整理

善于总结归纳,将整篇内容揉碎,筛除精华

?大佬们别着急划走,磨刀不误砍柴工,下面才是重点!!!


?具体实操

梳理完前面问题之后,我们心里就有了大致的草图,以步骤下为本狗实际写作流程,可选择参考

1.【前言】大模块

前言模块总览

【缘由】

介绍写作缘由,一个开篇引入言简意赅诙谐描述即可

【阅读时长】

本文阅读时长预估,可以根据文章字数估计出大概阅读时间,让读者通过时间有个文章长短概念

【前置条件】

有些文章讲解可能需要前置条件,如介绍SpringBoot+uniapp实操项目,前提必须告知用户需要准备如IDEA/HBuilderX等开发工具,提醒读者做好准备

【主要目标】

目标前置,将本文主要目标着重标识

【水图】

再细致的文字也不如图片吸引人,没图还说个JB啊,图片加文字更有代入感

其余可根据个人喜好,梳理明确即可,如下是本狗的一篇markdown的文章,供大家参考,【Apifox Helper】自动生成接口文档,IDEA+Apifox懒人必备

![图片转存失败,建议将图片保存下来直接上传
## 前言
### ?缘由
#### 接口文档对接爽,整理起来真费脑
对于**整理API文档**,本狗秉承偷懒为上的原则,想找一种**在IDEA中直接生成文档**的方法。**Apifox Helper**绝绝子,只需要在**IDEA中下载插件**,无脑配置后,**文档自动生成到Apifox**,美完美解决。并且**颜值及方便程度**绝比Swagger和postman好太多。

### ⏲️本文阅读时长
#### 约10分钟

### ?前置条件

 #### 1. IDEA开发工具
 #### 2. Apifox(不必要)

### ?主要目标
#### 一秒生成接口文档

### ?水图
#### IDEA中项目接结构图
 (https://img-blog.csdnimg.cn/f161ce9cb37b4a2bbba109329c444020.png)

想了解上图模块分层方法的同学,可以参考[《还不会SpringBoot项目模块分层?来这手把手教你》](https://blog.csdn.net/baidu_25986059/article/details/128739849)
#### 生成到Apifox接口文档图
 (https://img-blog.csdnimg.cn/1684e21db4784cdab5bfe0164ea9d8a8.png)
### ?‍?试用人群	
#### 1. 像本狗一样【偷懒】不愿意整理接口文档
#### 2. 学习新颖文档生成及管理方式
******
]()``
#### 2.【正文】大模块
此模块讲解此文章的重点,根据实际情况进行合理步骤拆分,引领读者思想并进,按需讲解所阐述内容

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/040e996bd20a4197b75ede51c48c4166~tplv-k3u1fbpfcp-zoom-1.image)

如本狗的Apifox Helper插件内容介绍,简单分为4步,通过如何安装,再到如何配置,最后实操测试,展示最终结果。此模块因人因项目而异,语句通顺通俗易懂解析即可。如下是本狗的一篇markdown的文章,供大家参考,[【Apifox Helper】自动生成接口文档,IDEA+Apifox懒人必备](https://blog.csdn.net/baidu_25986059/article/details/128991855?spm=1001.2014.3001.5502)

![图片转存失败,建议将图片保存下来直接上传
##  正文

####  ?1.在IDEA安装【Apifox Helper】插件
> 点击File=>Settings,找到Plugins,输入 **Apifox Helper**,点击安装,然后等待成功后**重启IDEA**,一定重启才会生效!!!

 (https://img-blog.csdnimg.cn/f8d2867dc3c34f41885bbb97ff5f0316.png)
 (https://img-blog.csdnimg.cn/e3abc38bba54422b9cbcadcb765d0640.png)
 
> ?Tips: 你可以选择**同步到 Apifox 项目中,也可以直接导出 markdown 文档**。如果是同步到 Apifox 项目,你还需要下载或注册 [Apifox 软件](https://www.apifox.cn/),并查看下面【Apifox Helper】的配置规则。如果不需要则只需要在项目中找到需要生成文档的Controller,右键后Export Markdown,直接导出**apifox-api.md**到对应目录。

 (https://img-blog.csdnimg.cn/bb4669b70f3e47959f9c37653d96353b.png)
> 打开apifox-api.md文件查看

 (https://img-blog.csdnimg.cn/d33fc72f73b14d5bab1a674687497607.png)
******

####   ?2.修改【Apifox Helper】对应配置
> 点击File=>Settings=>Other Settings,找到 **ApifoxHelper**

 (https://img-blog.csdnimg.cn/c2dca06f772e479a8df5f3216c6ea84c.png)


 ##### 1. Apifox服务器地址
 > https://api.apifox.cn


 ##### 2. API访问令牌
> 打开Apifox软件,点击左侧【头像】,点击【账号设置】,找到API访问令牌

 (https://img-blog.csdnimg.cn/0348be242df84f46836a7eedc21ce61a.png)
 (https://img-blog.csdnimg.cn/7bc3c602e7fd4db2a75fe45b48ececb4.png)

******
> 点击新建令牌,填写名称及有效期,本狗填写名称为【IDEA专用】,有效期为【无限期】,点击【保存并生成令牌】

 (https://img-blog.csdnimg.cn/75da0c17f3b94efeb19244898b020935.png)
******
> 复制令牌到IDEA中【Apifox Helper】配置项的API访问令牌

 (https://img-blog.csdnimg.cn/68bb8b9a2d7a4791b19cd2c809c83a46.png)
 (https://img-blog.csdnimg.cn/45fd961194d94d64878dba07f59424e3.png)

 ##### 3. 模块项目ID配置
> 打开Apifox软件,新建项目,本狗项目名为【bkb】,并确认

 (https://img-blog.csdnimg.cn/69f38d4fc5404158b73dae4690cf3eb6.png)
 (https://img-blog.csdnimg.cn/5df6fb0cd85c4c709287de0a26d5cd22.png)
******

> 进入项目【bkb】,点击【项目设置】,点击【基本设置】,复制项目ID
 
 (https://img-blog.csdnimg.cn/bedbea655f274cbabbac12877bbb4a8b.png)
 (https://img-blog.csdnimg.cn/08dfddc7f50b4fdea123de2b33b0813c.png)
******
> 将上述复制的【ProjectID】到IDEA中【Apifox Helper】配置【模块项目ID配置】,我的ModuleName为【bkb-boot-controller】,所以结构是bkb-boot-controller:xxxxx,点击【OK】

 (https://img-blog.csdnimg.cn/8ee2a423016f4d1299eb10145116655f.png)
 (https://img-blog.csdnimg.cn/730173da7d8140f5949de7c3c3a5d531.png)
******
####   ?3.生成文档

> 右击【bkb-boot-controller】模块,点击 【Upload to Apifox】,等待完成即可

 (https://img-blog.csdnimg.cn/1445c8c6fe234a828f6bcb70bcafa924.png)
 (https://img-blog.csdnimg.cn/2822decc74914d8eb259de222a829424.png)
******
####   ?4.查看Apifox中自动生成的文档
> 一定要点击下Apifox软件右上角的刷新!

> 一定要点击下Apifox软件右上角的刷新!

> 一定要点击下Apifox软件右上角的刷新!


 (https://img-blog.csdnimg.cn/544a895448ec46f98b950cb6707ecea6.png)
> 查看成果,大功告成,之后便可为所欲为了

 (https://img-blog.csdnimg.cn/303a77d57f0f493a92c39acf48efba2d.png)
******
]()

3.【总结】大模块

此模块以概括为主,总览全文,总结为主。如下是本狗的一篇markdown的文章,供大家参考,【SpringBoot】还不会SpringBoot项目模块分层?来这手把手教你


?辅助工具

1.emoji常用图标库

https://funletu.com/emoji/

文章中有很多地方使用了emoji图标表情,此网站复制即用

2.Markdown排版利器

http://md.aclickall.com/

通过此工具可将单调的markdown文件美化,转变成对应精美的HTML页面,模板样式可选,并支持代码自定义

3.封面图取材网站

https://www.pexels.com/zh-cn

通过此工具可选取封面图,最终重要的是免费且图片科技感十足


?主流博客平台

分享一下本狗平时发布的博客平台

1.csdn

https://blog.csdn.net/

2.稀土掘金

https://juejin.cn/

3.博客园

https://www.cnblogs.com/

4.51CTO

https://home.51cto.com/

5.segmentfault思否

https://segmentfault.com/

总结

本文通过程序员角度出发,介绍了写作博客的整体思路及流程。以本狗实际写作为基础,向大家介绍了一般写作的套路。以上步骤仅是本人的一点拙见,希望能给大家一点帮助。

有关【干货】如何写一篇还算凑活的博客文章的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐