什么是设计Web应用程序的合理工作流程?


9

自从我进行了大量的Web开发以来,已经有一段时间了,我想利用最新的实践,但是我一直在努力使工作流程可视化以合并所有内容。

这是我要使用的内容:

  • CakePHP框架
  • jsmin(JavaScript Minify)
  • SASS(语法上很棒的StyleSheets)
  • 吉特

CakePHP:

自我解释,修改和更新源代码。

jsmin:

修改脚本时,您是手动运行jsmin来输出新的缩小代码,还是最好运行预提交钩子来自动生成已更改的javascript文件的jsmin输出。假设我不了解实现提交挂钩。

SASS:

我真的很喜欢SASS所提供的功能,但是我也知道默认情况下浏览器不支持SASS代码,因此在某些时候,需要将SASS代码转换为普通的CSS。在工作流中的什么时候完成了。

吉特

我很害怕承认这一点,但是,上一次我进行任何实质性的Web开发时,我没有使用SCM源代码管理(即,我确实使用了源代码管理,但它包含非常详细的更改日志和备份)。

从那以后,我在使用Git(以及Merurial和SVN)进行桌面开发方面拥有丰富的经验,但是我想知道如何在Web开发中最好地实现它。

在Web主机上实现远程存储库是一种常见的做法,以便我可以将更改直接推送到生产服务器,还是有一些跨平台(windows / linux)工具可以轻松地将更改后的文件仅上传到生产服务器。是否有网络托管公司可以轻松实现远程存储库,我是否需要SSH访问等?

我知道如何在具有独立的远程跟踪分支的远程存储库的我自己的测试服务器上完成此操作,但是我以前从未在远程生产Web托管服务器上完成此操作,所以我还不知道这些选项。

额外:

我正在考虑实现一个javascript框架,其中将页面上使用的单独javascript文件编译为生产服务器上每个页面的单个文件,以限制每页所需的文件下载数量。

这样的东西已经存在了吗?是否已经有一个狂野的开源项目实现了我可以使用和贡献的类似功能?

考虑到网络开发人员对性能的偏执(以及网站上文件请求的数量严重影响性能的事实),我猜想网络上已经有一些巫师黑客已经解决了这个问题。

Answers:


2

您可以查看Google针对Apache的PageSpeed扩展:afaik,有一个选项可以自动聚合和最小化Javascript和CSS,并与缓存结合使用,这将适合您在文章结尾提到的内容。


1
太酷了,我没有意识到所有这些都可以通过一个Apache模块完成。Javascript / css压缩,javascript / css串联以及其他一系列可选的性能改进。经过一番谷歌搜索,我什至发现Dreamhost为它提供了他们的共享/ VPN托管。我很惊讶,在webmasters.stackexchange.com或stackoverflow.com上没有关于它的更多信息。
伊万·普赖斯

5

杰斯敏

如果您没有大量的JS,则可以设置一些内容以在每次单击保存时将其最小化。如果您确实有很多JS,请使其成为部署过程的一部分(请参见下面的Git)。

萨斯

使用指南针框架。它包括SASS,以及一个小脚本,每次保存时都会“监视”您的SASS目录,并将文件编译为CSS(如果需要,还包括缩小的CSS)。它是基于RoR构建的,但是您可以通过创建Compass配置文件并运行“ compass watch”命令来轻松地将其与任何Web框架一起使用。Compass还包括许多其他方便的工具,例如Blueprint有用的mixins和通过Lemonade插件自动生成的Sprite (应在下一发行版中内置到Compass中)。

吉特

根据站点的大小/复杂程度,考虑遵循Capistrano部署模型。不知道是否可以直接将Capistrano与CakePHP一起使用,但是要点是:每个生产服务器都有一个“当前”文件夹,其中包含当时生产中正在运行的所有代码。每次您要部署新代码时,您都运行一个ssh到每个生产服务器的脚本,并具有该脚本(a)将“当前”文件夹的内容复制到备份文件夹中(带有发行版名称/时间戳),( b)从Git中检出最新代码到“当前”文件夹中,然后(c)从“当前”文件夹中开始提供新代码。这样,您可以在必要时回滚到任何以前的版本,并且可以准确确定生产中正在使用哪个修订版。Capistrano还允许您在部署过程中添加各种自定义任务,包括JS / CSS minifaction,

额外

是的,有一堆。Google为“ CSS / JS concat”之类的东西。这是我为CakePHP找到的一个快速工具:Asset Packer


非常感谢您的投入。我非常喜欢在Compass Framework中看到的内容。我只希望我知道在PHP中部署它的方法。我四处搜寻,但找不到其他选择。Capistrano看起来也很有趣,但是我不是使用昂贵而脆弱的文件复制模型,而是使用ssh告诉所有远程服务器上的git客户端,在检查它可以在测试中正常工作后进行快速的“ git pull --rebase”服务器优先。
伊万·普赖斯

(续)Asset Packer也看起来很有趣。我选择另一个答案而不是您的唯一原因是,它包含了所有这些内容,并且在服务器本身上进行了处理(因此不需要其他脚本)。唯一的缺点我看到的PageSpeed是静态内容的添加处理(这是很容易使用静态内容缓存和/或CDN解决我真希望我能接受2,因为你的答案有很多有价值的信息。
埃文鲽

您无需使用PHP“部署” Compass框架。您只需在编码时运行它,它就会在您每次单击保存时编译CSS文件,而CSS文件才是实际部署的文件。要“运行”指南针,首先需要生成配置文件(compass.rb)-使用此文件生成命令行选项:jsfiddle.net/chriseppstein/PG46q/3。一旦使用所有路径完成了配置文件的设置,只需在与配置文件相同的文件夹中运行“ compass watch”,指南针将在您每次点击保存时开始重新编译SASS。在其他项目中尝试:非常简单,快速。
Yevgeniy Brikman 2011年

另外,据我所知,Capistrano并没有做太多复制。每次部署时,它都会签出最新代码,并交换文件夹名称。优点是您可以始终通过再次交换文件夹名称来回滚到早期版本。
Yevgeniy Brikman 2011年

我找到了一篇有关如何在PHP中启动和运行文章。在Ruby项目之外使用比我预期的要容易。刮擦我对Capistrano的最后评论。我以为它是用来向多个服务器发送分布式命令的。如果我可以通过ssh访问远程服务器,则宁愿删除git客户端,以从生产分支中获取最新更改。恕我直言,文件夹交换文件夹是一个坏主意。我更喜欢在发行周期中使用版本标记,如果当前版本有问题,只需签出上一个标记。
伊万·普赖斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.