如何使用文本编辑器和版本控制轻松编写网站?

如何使用文本编辑器和版本控制轻松编写网站?

问题

我想写一个网站不错的设计,比如由 WordPress、SPIP 或基于 CSS 的高级模板生成的模板。同时,我希望在文本编辑器中写入内容(可能在文本模式下,例如使用 Emacs 或 vim)就像编写 LaTeX 文件一样。此外,我想使用版本控制以便轻松查看网站不同版本之间的变化。我应该说我想到的网站是不是博客;它更有条理,而且几个页面应该会随着时间而更新。我并不寻求高度复杂的解决方案,因为它是一个包含几十页(按“部分”、“子部分”甚至“子子部分”组织)的个人网站。

我想到的是 LaTeX 模型,您可以编写内容并让编译器生成漂亮的输出。LaTeX 代码相当简单,并且采用文本格式,因此应用版本控制很简单。

为什么经典解决方案似乎不起作用

WordPress 非常好,但据我所知,您无法真正从终端中的文本编辑器进行编辑。您必须使用某种图形界面。与 WordPress 一样,SPIP 将生成一个数据库,而版本控制(使用 Git 等)似乎不适合该数据库。

HTML/PHP/CSS 模板很不错,但内容和设计有点太复杂了。特别是,从一个模板切换到另一个模板并不容易,尤其是在没有标准的情况下。通常,模板不会演变,因为你只是在某个地方选择了它。此外,它提供的灵活性很低,可能缺少你需要自己添加的功能。例如,它可能永远不会制作移动版本,而聪明的导出器可能会这样做。

我知道 Emacs 下有 orgmode 之类的软件以及相应的导出器。但这更多是用于博客,而且最终的设计并不是很好。

我想我的问题在于是否有软件可以发布纯文本网页并组织这些网页(页面/子页面,带有菜单,漂亮的设计,...)。如果网页的整体组织必须由文本编辑器进行,那么这是可以接受的。如果软件足够聪明,网页仍然可以包含图像、方程式等。

我引用了 WordPress 和 SPIP,但我考虑了许多其他解决方案,例如 wiki(MediaWiki 或其他)、其他发布者(例如 Dotclear)、CMS(例如 Joomla)、CMF(例如 Drupal)或甚至框架(例如 Django)...... 也许其中一个实际上是解决方案,而我只是没有意识到这一点?

编辑

我想补充一个额外的约束/示例。假设您想要包含由外部软件(例如 Doxygen)生成的页面,用于某些软件的文档。然后您可能需要自动添加文档(针对新版本的软件)。这需要一定的灵活性,也许是脚本选项。

答案1

有很多简化的标记语言到 html/网站转换器项目。例如

  • 有面向 Python 的 sphinx:将 ReST 文件转换为网站,并且
  • 面向 ruby​​ 的 jekyll:将 Markdown 文件转换为网站。

另外,既然您提到了 emacs:

  • Org-mode 和
  • emacs 缪斯

可以用简化的标记语言生成网站。

最后还有完整的网络框架,例如

  • 面向 Python:Flask、Django、Pyramid
  • 红宝石导向:padrino、scourched、pakyow

在每种情况下,您都可以将源文件置于版本控制之下。我自己使用 sphinx 和 twitter-bootstrap 主题:在研究中使用 Python

答案2

如果静态网站对您来说已经足够好了,那么下面的内容也许对您有帮助。我已经在本地机器上设置了我的网站,使用 进行版本控制git。本地存储库与远程存储库相关联splitted-bare部分位于我的私人服务器上,内容位于公共服务器上。这样,我就可以在本地编辑我的网站,一旦准备好,就git push web可以发布更改。这是受以下启发的:并重复我的博客。你可以看到结果网站这里

使用这种方法,您可以按照自己的意愿设计网站,并将设计和内容置于版本控制之下。此外,从技术角度来看,您拥有网站的三个同步副本:1. 本地副本,2. 远程裸存储库,以及 3. 实际的公共网站。

答案3

我不认为这里适合问这种问题,因为答案数量庞大,而且根据你所说的“容易编写”的含义,解释也各不相同。我可以(并且曾经)用文本编辑器编写出相当不错的网站,但这并不容易,因为它需要对 CSS 和 HTML 有深入的了解。

话虽如此,既然您提到了 VIM,而且您的网站似乎是为“一人乐队”而不是团体活动而设,我发现使用 VI 在服务器(实时或测试)上开发它,然后使用 FSVS 和 SUBVERSION 存储库直接在 Linux 机器上对代码进行版本控制,而不到处留下“.svn”文件,这是很实用的。[fsvs 似乎更多地设计用于配置版本控制,但如果您不需要进行合并,它也可以很好地用于其他东西]

相关内容