上一篇,我讲述了植入式Web前端开发的基本情况,本篇就来探究其开发方法。以下假定CMS只能植入前端代码,并且需求规模是任意大小的。

代码形式

HTML代码是直接植入的毫无疑问,但除非植入的代码非常简短、功能独立,且植入点数量不多,否则将CSS和JavaScript代码直接嵌入在HTML代码中是不明智的(有的CMS可直接植入CSS和JavaScript代码,其本质也是将这些代码直接嵌入在HTML中),主要有以下弊端:

  • 降低性能:CSS和JavaScript代码不会被浏览器缓存。
  • 不方便调试:每次代码修改都要重新提交到系统中;代码量比较大时,混杂在一起难以书写。
  • 不方便管理:植入点比较多时,尤其是有公共代码时,难以清晰地管理。

更好的办法是,将CSS和JavaScript做成单独的文件,在植入的HTML代码中通过<link rel="stylesheet"><script>标签引用之。

通常,CMS会提供资源文件上传的功能。可以先在本地开发好CSS和JavaScript文件,再上传到CMS中,然后使用上传后CMS提供的文件URL。如果CMS不提供这种功能,也有其他各种办法,只要使得CSS和JavaScript文件能被公网访问即可。

开发环境

通常,在CMS上提交代码是立即生效的,所以不能直接在用户使用的页面(即生产页面)上一点点地开发和提交。一个可行的办法是,专门设立一个用户不会访问的、仅供开发用的页面,在此页面上开发,待代码稳定之后,再提交到生产页面上。

通常,开发时HTML代码部分是改动比较少的,更频繁改动的是CSS和JavaScript代码。在使用独立文件时,必须保证页面引用的CSS和JavaScript文件始终是最新的。如果它们在远程主机上,这种保证比较麻烦,一般要频繁上传文件。更好的办法是,在本地建立一个Web服务器来提供这些CSS和JavaScript文件

在本地机器上建立一个Web服务器,让正在开发的CSS和JavaScript文件能够通过这个服务器访问到。然后在开发页面的植入代码中引用本地服务器上URL(可以在URL末尾加一个?,让浏览器不缓存)。这样,只需要刷新一下页面,无需重新提交,最新的CSS和JavaScript代码就立即生效了。

当代码稳定时,再将文件一次性上传到生产环境中,然后修改HTML中的引用的URL为生产环境中的URL(末尾无?),提交到生产页面即可。

在HTML代码不需要修改的情况下,甚至可以直接在生产页面上做开发。

在hosts中将生产环境提供CSS和JavaScript文件的主机域名指向到本机,然后在本地Web服务器中绑定该域名,并使得文件的访问路径与生产环境完全一致,最好再设置CSS和JavaScript文件不缓存。如果是HTTPS访问,则还需要做一个自签名证书,并在浏览器中忽略证书问题继续访问。如此,在本机,生产页面中获取文件时实际上会从本地获取,而用户的访问仍然正常基于生产环境。

更多

到这里,已经可以看到,除了代码部署方式有些特殊,其他方面实际上跟正常的前端开发没什么区别。因此,各种前端开发技术、工具实际上都可以使用,如多文件开发然后编译成单文件、代码压缩、Git版本控制等等。

如果规模比较大,还可以专门开发一个自动部署机制来做植入代码的持续集成。

植入式Web前端开发方法的更多相关文章

  1. 植入式Web前端开发

    在博客园.凡科建站和其他的一些CMS系统中,提供有允许管理者向网页中插入自定义HTML代码的功能,我将其称之为"植入式"的Web前端代码. 因为CSS和JavaScript可以直接 ...

  2. 指尖下的js ——多触式web前端开发之一:对于Touch的处理

    指尖下的js ——多触式web前端开发之一:对于Touch的处理 水果公司的那些small and cute的设备给我们提供了前所未有的用户体验.当用户在iphone和ipad上运指如飞的时候,那些使 ...

  3. 指尖下的js —— 多触式web前端开发之三:处理复杂手势(转)

    这篇文章着重介绍多触式设备上特有的gesture event(android和iOS对这个事件的封装大同小异).这个事件是对touch event的更高层的封装,和touch一样,它同样包括gestu ...

  4. Web前端开发实战6:CSS实现导航菜单结合二级下拉式菜单的简单变换

    前面几篇博文都在讲导航菜单和二级下拉式菜单,事实上有非常多方法都能够实现的.详细的情况还要视情况而定. 在后面学习到jQuery框架之后,会有更丰富的动画效果.因为在学习Ajax和jQuery的初步阶 ...

  5. Web前端开发实战1:二级下拉式菜单之CSS实现

    二级下拉式菜单在各大学校站点.电商类站点.新闻类站点等大型?站点非经常见,那么它的实现原理是什么呢? 学习了Web前端开发的知识后,我们是能够实现这种功能的.复杂的都是从基础效果上加入做出来的.原理和 ...

  6. web前端开发与iOS终端开发的异同[转]

    * {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...

  7. 用grunt搭建web前端开发环境

    1.前言 本文章旨在讲解grunt入门,以及讲解grunt最常用的几个插件的使用. 2.安装node.js Grunt和所有grunt插件都是基于nodejs来运行的,如果你的电脑上没有nodejs, ...

  8. web前端开发学习内容

    应该 具备的 知识技能 :懂web标准,熟练手写 xhtml css3 并符合 符合w3c标准                       代码能 兼容主流浏览器.ie6.7.8.9 ff 等.    ...

  9. 【转载】WEB前端开发规范文档

    本文转载自谈笑涧<WEB前端开发规范文档> 为 新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益 ...

随机推荐

  1. 通过cmake在Android中调用c语言,且三方应用通过so库调用c语言

    1.  新建JniUtils类实现native方法 2.  在build中执行clean project 再rebuild project 生成class文件. 注意:最新版本的AndroidStud ...

  2. 小白学vue第四天,从入门到放弃(vue指令的使用加高阶函数)

    v-on修饰符的使用 .stop 阻止事件冒泡 调用  stopPropagation() .prevent 阻止默认事件 调用 event.preventDefault() .keyCode 键盘事 ...

  3. RabbitMQ入门案例

    RabbitMQ入门案例 Rabbit 模式 https://www.rabbitmq.com/getstarted.html 实现步骤 构建一个 maven工程 导入 rabbitmq的依赖 启动 ...

  4. 端口,InetSocketAddress类的使用

    端口 端口表示计算机上的一个程序的进程: 不同的进程有不同的端口号!用来区分软件 被规定:0~65535 TCP,UDP:65535*2 单个协议下,端口号不能冲突 端口分类: 公有端口:0~1023 ...

  5. MySQL学习07(规范化数据库设计)

    规范化数据库设计 当数据库比较复杂时我们需要设计数据库 糟糕的数据库设计 : 数据冗余,存储空间浪费 数据更新和插入的异常 程序性能差 良好的数据库设计 : 节省数据的存储空间 能够保证数据的完整性 ...

  6. pikachu Unsafe Filedownload 不安全的文件下载

    不安全的文件下载概述文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件 ...

  7. Windows提权小结

    摸鱼的时候,想想内网这部分还有什么地方适合水一下,翻翻往期,开始填坑 总结一下Windows提权的部分,以后有时间再补一下Linux提权 这仍然是一篇思路总结类的随笔,具体细节内容不展开,也展开不了. ...

  8. DVWA靶场之SQL Injection通关

    SQL注入,一个大概的手工流程: 判断是否有注入,什么类型 破解SQL语句中查询的字段数是多少 确定回显位置 破库 破表 破字段 获得内容 Low: <?php if( isset( $_REQ ...

  9. Javaweb学习——request&response

    request对象的作用 request是服务器对浏览器访问请求的封装 访问请求参数,通过getParameter()方法获取传递参数的值. 在进行转发请求时,需要把一些参数传递到转发后的页面进行处理 ...

  10. Spring-Boot的动态代理AOP原理

    前言 Spring AOP使用了动态代理技术,动态代理在业界比较流行的实现方式有,CGLIB,Javassist,ASM等等. Spring动态代理实现方式 Spring采用了JDK和CGLIB两种方 ...