热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Web实战之发表博客

前言作为一名Web新手,我最早接触的是angular框架,之后我带着好奇看了看backbone和ember,毫无疑问它们都是十分优秀的作品,但要么太臃肿,要么学习曲线太陡峭。当我看

前言

作为一名Web新手,我最早接触的是angular框架,之后我带着好奇看了看backbone和ember,毫无疑问它们都是十分优秀的作品,但要么太臃肿,要么学习曲线太陡峭。当我看到Vue.js的时候,我就瞬间被它的美感所吸引,angular的双向绑定与directive,backbone的小巧简洁,很好地结合在一起。而且它只是一个库,而非一个框架,你可以自由地设计你的作品和运用其他工具。遗憾的是由于是新作品,并没有一个强大的社区,有些方面也不太成熟,还有一些bug。这次的博客功能十分简单,但算是Vue的一个简单例子。

完成的功能

  • 发表博客

依赖的工具

  • Vue.js库
  • Express框架
  • mongoose
  • Bootstrap
  • jQuery
  • jQuery-tag-plugin
  • SuMarkdown

页面代码

由于页面并不复杂,而且大部分与我前面所写的博客Web实战之Markdown编辑器中的页面重合,故这一次就不贴出页面代码了

前端代码

JavascriptVue.directive('tags',{
twoWay:true,
bind: function () {
var self=this;
console.log(self);
$(self.el).on('itemAdded',function(){
scope.blog.tags=$(this).val();
});
$(self.el).on('itemRemoved',function(){
scope.blog.tags=$(this).val();
});
},
update:function(){},
unbind:function(){
$(this.el).off();
}
});
var scope=new Vue({
el:'body',
data:{
profile:{
avatar:''
},
avatar:'',
blog:{
title:'',
tags:[],
body:'',
author:''
},
msg:'',
display:false
},
methods:{
getProfile:function(){
console.log('start');
$.get('/users/getUser').done(function(data){
if(data.success){
$.extend(scope.profile,data.content.profile);
scope.profile.uname=data.content.username;
}
else{
if(!data.err.message) return;
scope.msg=data.err.messgae;
scope.display=true;
}
}).fail(function(){
scope.msg='未知错误,请重试';
scope.display=true;
});
},
submit:function(){
this.blog.author=this.profile.uname;
$.post('/writeBlog',this.blog).done(function(data){
console.log(data);
if(data.success){
scope.msg='发表成功';
scope.display=true;
}
else{
if(!data.err.message) return;
scope.msg=data.err.message;
scope.display=true;
}
}).fail(function(){
scope.msg='未知错误,请重试';
scope.display=true;
});
}
}
});
scope.getProfile();

后端代码

此次的后端代码也十分简单

Javascriptfunction writeBlog(req,res){
if(req.body.author!==req.session.uname)
return res.json({
success:false,
err:new Err('用户名不一致')
});
(new Blog(req.body)).save(function(err){
if(!err) res.json({
success:true,
err:null
});
else res.json({
success:false,
err: new Err('后台错误,稍后再试')
});
});
}

效果展示

《Web实战之发表博客》


推荐阅读
  • wpf+mvvm代码组织结构及实现方式
    本文介绍了wpf+mvvm代码组织结构的由来和实现方式。作者回顾了自己大学时期接触wpf开发和mvvm模式的经历,认为mvvm模式使得开发更加专注于业务且高效。与此同时,作者指出mvvm模式相较于mvc模式的优势。文章还提到了当没有mvvm时处理数据和UI交互的例子,以及前后端分离和组件化的概念。作者希望能够只关注原始数据结构,将数据交给UI自行改变,从而解放劳动力,避免加班。 ... [详细]
  • 媒介本文的前身是源自github上的项目awesome-github-vue,但由于该项目上次更新时候为2017年6月12日,许多内容早已逾期或是许多近期优异组件未被收录,所以小肆 ... [详细]
  • vue使用
    关键词: ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了在使用vue和webpack进行异步组件按需加载时可能出现的报错问题,并提供了解决方法。同时还解答了关于局部注册组件和v-if指令的相关问题。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 入门Java需熟练掌握哪些技术呢?
    Java工程师无疑是当下令人艳羡的工作之一,因此,每年都有大批大批的朋友想要报名Java工程师学习Java也就不奇怪了。那么入门Java掌握哪些技术能力 ... [详细]
  • <ItemTemplate><ahref#onclickjavascript:window.location.hrefoa_NoReply.aspx?fid ... [详细]
  • 这篇“Webpack是怎么工作的”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大 ... [详细]
  • 用户登录 ... [详细]
  • 经常被面试官考的JavaScript数据类型知识你真的懂吗?
    本文中讲解的内容面试题引入js中的数据类型js弱类型语言js中的强制转换规则js转换规则不同场景应用js中的数据类型判断NaN相关总结toString与String的一些误区文章篇 ... [详细]
  • 1.0为什么要做这个博客站?  在工作学习中,经常要搜索查找各种各样的资料,每次找到相关资料后都会顺手添加到浏览器书签中,时间一长,书签也就满了。而且下次再点击这个书签时,可能就会忘记当时为什么要添加这个书签了,更有可能书签连接已经无效。这样一来,也就不方便 ... [详细]
  • 本文介绍了在Go语言中可见性与scope的规则,包括在函数内外声明的可见性、命名规范和命名风格,以及变量声明和短变量声明的语法。同时,还介绍了变量的生命周期,包括包级别变量和局部变量的生命周期,以及变量在堆和栈上分配的规则和逃逸分析的概念。 ... [详细]
  • 前言:原本纠结于Web 模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中eval函数。虽然eval函 ... [详细]
author-avatar
哈行小DWW_421
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有