2.2-2 文章模块开发【添加文章页面脚本编写】

~/blog/user/art/1.0.0/add.js 开发

添加文章页面主要的功能就是一个提交表单,这里我们采用异步提交

1.模块依赖

为了提高开发效率,我们用jQuery进行开发(我们建议一个项目只用一个jquery版本,因此我们把jQuery作为一个核心模块进行处理)

  访问 http://127.0.0.1:1234,我们可以看到jquery文件的id为$, 提供的接口就是jQuery(就是平时我们用到的$函数)

因此,我们可以这样在add.js中声明对jQuery的依赖

var $ = require(‘$‘);

接下来为表单绑定submit事件,然后牵扯到一个问题,数据交互的问题,很多时候我们在开发前端的时候,后台数据还没准备好,或者说即使准备好了由于跨域等一些问题也没法直接用,因此atm本地的node开发环境提供了测试数据的支持

2.测试数据

  <1. 测试数据的访问地址问题:

    atm规定:测试数据必须放在views文件夹下面(一般只有有模板的时候才需要测试数据)

    因此,我们在 ~/blog/user/art/1.0.0/views下面新建一个模拟表单提交后返回数据的脚本文件 eg: submit-add.js

    我们还记得 添加文章的访问地址是

    http://127.0.0.1:1234/dev/user/art/1.0.0/views/add

    因为datas与add.ejs平级, 因此submit-add.js我们这样访问:

    http://127.0.0.1:1234/dev/user/art/1.0.0/views/datas/submit-add

    因此,在add.ejs中,我们可以通过 给form表单的 action 写成 "./datas/submit-add"即可

  <2.对测试数据的相关思考

    有时候我们会有以下几种需求:

      a.需要多种状态的测试数据

      b.有时候需要让数据延迟几秒返回,以测试一个loading效果或其他效果

      c.最好能把json数据转成jsonp数据

    如何延迟返回:

    为了解决上述几个问题,我们需要对测试数据访问地址增加不同的query,大致格式如下

http://127.0.0.1:1234/dev/user/art/1.0.0/views/datas/submit-add?status=ok
http://127.0.0.1:1234/dev/user/art/1.0.0/views/datas/submit-add?timeout=3000
http://127.0.0.1:1234/dev/user/art/1.0.0/views/datas/submit-add?callback=random_func

  

    那么submit-add.js怎么写?

var datas = {
    ok: {
        status: true,
        message: ‘文章添加成功‘
    },
    error: {
        status: false,
        message: ‘文章添加失败‘
    }
};
/**
 *
 * @param query {Object} location.search对象
 * @param req {Object} http request对象
 * @param res {Object} http response对象
 * @returns {JSON|JSONP|TEXT|HTML}
 */
module.exports = function (query, req, res) {
    var status = query.status || ‘ok‘;
    return datas[status];
};

如果想测试失败的数据,

  http://127.0.0.1:1234/dev/user/art/1.0.0/views/datas/submit-add?status=error(或者我们自定义一些其他的规则或数据都行)

timeout和jsonp在代码中不用考虑,只需要变幻url中的timeout和callback参数即可

add.ejs中的代码

<% atmjs.use(‘$family/$module:$version/add‘); %>
<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>添加文章页面</title>
    <%- atmjs.loadCss(); %> <!--渲染入口文件依赖的css-->
</head>
<body>

<form id="submit-add" action="./datas/submit-add">
    <ul>
        <li><input type="text" id="title" name="title"/></li>
        <li><textarea name="content" id="content" cols="30" rows="10"></textarea></li>
        <li><input type="submit" value="添加文章"/></li>
    </ul>
</form>

<%- atmjs.loadJs(); %> <!--渲染入口文件依赖的JS相关代码-->
</body>
</html>

  

接下来add.js代码就很简单了

var $ = require(‘$‘);
$(document).on(‘submit‘, ‘#submit-add‘, function (e) {
    e.preventDefault();
    var ajaxUrl = $(this).attr(‘action‘);
    $.getJSON(ajaxUrl, function (data) {
        alert(data.message);
    });
});

目前为止,一个简单的发布文章页面及代码已经完成!

时间: 2024-08-02 00:47:24

2.2-2 文章模块开发【添加文章页面脚本编写】的相关文章

Drupal8开发教程:模块开发——创建新页面

之前我们已经通过<Drupal8开发教程:认识.info.yml文件>对模块的YAML文件有了了解,今天我们来看如何通过模块开发的方式添加一个新的页面. 在 Drupal 7 中,通过模块添加新页面非常简单,使用 hook_menu 定义路径及回调函数返回要显示的结果即可.但 Drupal 8 却要麻烦很多,虽然也是定义路径,然后关联用于显示内容的函数,但却要在两个文件中分开进行.而且 Controller 文件还有目录结构要求,这些变化都需要慢慢来适应了. 除了上文中定义的 hello_wo

2.2-1 文章模块开发

文章模块的开发目录为: ~/blog/work/art/1.0.0 文章管理主要有3个页面: 文章列表/添加文章/编辑文章 1.模板 atm规定,模板文件统一放在版本号下面的views文件夹下面 因此: 1.在~/blog/work/art/1.0.0下面创建views文件夹 2.在views文件夹下创建 list.ejs / add.ejs / edit.ejs 三个文件 2.入口文件 针对这三个模板,我们设定三个入口文件 分别为list.js / add.js / edit.js 这三个入口

专题5-内核模块开发2内核模块设计与编写

1.范例 touch helloworld.c chmod 777 -R helloworld.c #include<linux/init.h> #include<linux/module.h> static int hello_init(void) { printk(KERN_WARNING"hello,world!\n"); return 0; } static void hello_exit(void) { printk(KERN_INFO"Go

Nginx Http模块开发

关于Nginx Http模块开发的文章非常少,只有Emiler的那篇关于Http模块的文章,但是那篇文章里面,并没有说到事件型的模块如何进行开发.而且文章里面提到的内容实在是让人有点意犹未尽.因此,对于Http事件型模块的开发进行了一些总结,与大家分享.但是,无论如何,要进行Nginx模块开发,最好的方法还是找到相似性较大的模块的代码进行参考,多试多看. 通常,一个Http模块均是有以下的几个部分组成: 1.模块配置结构体:(configure structure) 负责存储配置项的内容,每一条

ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章

转自:http://www.cnblogs.com/mzwhj/p/3592895.html 上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东西没有理由不支持. 附件的上传同样基于KindEditor实现,可以上传图片,flash,影音,文件等. 目录 ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一)

Revit二次开发基础-在附加模块中添加外部工具选项

想必想投身与Revit二次开发的朋友们可能会出现这样的一种情景,当我们打开自己的revit(2014版本以上)时,点击附加模块,会发现缺少一个外部工具这个按钮!!!是不是Autodesk给你藏起来了,其实还真是! 接下来我就给大家演示下如何在附加模块下添加外部工具这个按钮. 本人使用的是Revit2016,所以以下是以该版本进行演示. 首先我们需要在Autodesk官网下载一个2016版本的SDK,如图所示: 另附网站:http://usa.autodesk.com/adsk/servlet/i

使用Asp.Net MVC开发兼职文章系统

我已经开发好了,你拿去用就是了. 以下是README的内容,包含功能要求和开发过程的一些思考: 一.功能 1.学生兼职人员文章(任务.自由编写),审核(通过,退回修改,无效),并按每15天结算一次费用,满1000元以后才能提现. 2.公司内部人员发文章,审核(通过,退回修改,无效),可选有无金额 3.医院医生发文章,审核(通过,退回修改,无效),可选有无金额 4.特殊账户,无需审核,直接发布,可选有无金额 5.文章分类,可沿用现在小刘那开发的程序里面的分类 6.设置文章金额,通过统计通过文章(普

开发技术文章收集

1. SQL Server存储过程创建和修改(4207) 2. 百度编辑器UEditor常用设置函数大全(2501) 3. SoSoft项目之C# WinForm托盘图标实例(2469) 4. C# WinForm创建包含备注的快捷方式实例(2141) 5. .NET配置文件读写实例(附SosoftConfigHelper类)(2084) 6. SoSoft项目之向WinForm添加声音资源并控制播放实例(1756) 7. 高效率去掉js数组中重复项(1273) 8. 使用Visual Stud

[二次开发]dede文章页面如何显示作者的头像

dede在文章页面显示作者只是显示其用户名,但是假如我想把dede改造成较为社交化的网站,我觉得是有必要显示作者的头像的,但是官方并没有相应的模版标签. 在网上看到解决这个问题的办法基本上是直接在模版页面调用runphp的程序段,的确这种办法是可行的. 但是我不倾向于这么做,因为很多时候我们都需要差异化的功能,每次都这样夹杂着php代码看起来很乱. 我是直接在php文件里面修改的,让文章模版可以调用几个新的标签. 找到/include/arc.archives.class.php文件 搜索"$t