做了一个简单的示例,目的是记录环境配置以及这套框架的结构流程。

1.配置环境

默认nodejs已安装。

安装以下模块:express(nodejs框架),grunt(javascript task runner),grunt-contrib-watch(grunt live load插件),grunt-express-server(grunt启动express服务端插件)。

命令行中进入程序目录,依次输入以下命令:

npm install express 回车

npm install grunt  回车

npm install grunt-contrib-watch 回车

npm install grunt-express-server 回车

安装成功后,可以在程序目录中的node_modules文件夹里看到相应的模块文件夹:

2.配置grunt 任务

打开程序目录下的Gruntfile.js文件,注册express和watch任务。

express任务启动express服务器并且运行server.js文件。watch任务监视express任务以及live reload。代码如下:

module.exports = function(grunt) {//config projectgrunt.initConfig({watch: {options: {livereload: true,},express: {files:  [ 'server.js' ],options: {spawn: false}}},//start express server and run server.jsexpress: {options: {// Override defaults here},dev: {options: {script: 'server.js'}}}});//enable pluginsgrunt.loadNpmTasks('grunt-express-server');grunt.loadNpmTasks('grunt-contrib-watch');//register taskgrunt.registerTask('default', ['express','watch']);
};

3. 主要文件

serve_data.js,server.js和index.html都在程序目录下。

index.html用angularjs resource向服务器上的‘/data’路径发起http请求。

在server.js中定义了路径‘/data’的行为是返回通过serve_data.js文件中的getData()方法获取的data变量。

index.html 的resource收到返回的data后,通过数据绑定{{data}}将其显示在页面上。

三个文件具体代码及注释如下:

index.html:

<!DOCTYPE html>
<html>
<head>
<scriptsrc="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js"></script>
<scriptsrc="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.16/angular-resource.min.js"></script>
</head>
<body ng-app="myApp" ng-controller=MainCtrl><div>{{data}}</div><script>var myApp = angular.module('myApp', [ 'ngResource' ]);//define app factorymyApp.factory('DataFac', function($resource) {//request data from route '/data'return $resource('data');});//define app controllermyApp.controller('MainCtrl', function($scope, DataFac) {DataFac.get(function(response) {$scope.data = response;})});</script>
</body>
</html>

server.js:

//use express
var express = require('express');
var app = express();//require file serve_data.js to use its exported modules
var instance=require('./serve_data.js')
var data=instance.getData();//define route
app.get('/data',function(req,res){res.send(data);
});//serve static index.html as default
app.use(express.static(__dirname + '/'));//bind and listen for connections on the given host and port
app.listen(9001,function(){console.log('Server listening on',9001)
})

serve_data.js:

//export funtion getData
module.exports={getData:function(){//data can be fetched from a database or a file and so on. Here for simplicity,provide json data directlyvar data={"widget": {"debug": "on","window": {"title": "Sample Widget","name": "main_window","width": 500,"height": 500},"image": { "src": "Images/test.png","hOffset": 250,"vOffset": 250,"alignment": "center"},"text": {"data": "Click Here","size": 36,"style": "bold","name": "text1","hOffset": 250,"vOffset": 100,"alignment": "center"}}} ;return data;}
}

4.运行程序

在命令行中进入程序目录,输入grunt运行grunt任务。打开浏览器进入http://localhost:9001/  ,得到以下结果:

Angularjs Nodejs Grunt 一个例子相关推荐

  1. 使用 AngularJS NodeJS 实现基于token 的认证应用(转)

    认证是任何 web 应用中不可或缺的一部分.在这个教程中,我们会讨论基于 token 的认证系统以及它和传统的登录系统的不同.这篇教程的末尾,你会看到一个使用 AngularJS 和 NodeJS 构 ...

  2. AngularJS介绍 - 下一个大框架

    AngularJS AngularJS是web应用的下一个巨头. AngularJS如果为创建web应用而设计,那它就是HTML的套路了.具有数据绑定, MVW, MVVM, MVC, 依赖注入的声明 ...

  3. 用nodejs写一个简易小爬虫

    今天突然心血来潮,不如我用nodejs写一个小爬虫吧,nodejs说实话,自从它出生以来,就变成了前端的福音了,我也是一直想学,也曾经自己研究过一段时间,可是我没用到过项目上,爬虫也没写过,我就上网看 ...

  4. [asp.net core]SignalR一个例子

    摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...

  5. R语言使用lm构建线性回归模型、并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型预测中系统误差的一个例子 、自定义函数计算R方指标和均方根误差RMSE

    R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型预测中系统误差的一个例子 .自定义函数计算R方指标和均方根误差RMSE 目 ...

  6. python中self_一个例子带你入门Python装饰器

    ============ 欢迎关注我的公众号:早起python ============ 前言 在还未正式发布的python3.9中,有一个新功能值得关注,那就是任意表达式可以作为装饰器,如果你还不知 ...

  7. ftp服务器文件备份,数据备份是十分重要的,下面是通过ftp将本机数据备份到远程服务器的一个例子...

    数据备份是十分重要的,下面是通过ftp将本机数据备份到远程服务器的一个例子 以备份oracle数据为例 本机IP:192.168.0.1 远程IP:192.168.0.111 备份脚本 ora_bak ...

  8. Bootice1.34版本把grub4dos0.46a写入硬盘MBR失败一个例子

    Bootice1.34版本把grub4dos0.46a写入硬盘MBR失败一个例子         一个同事的台式机,BIOS启动,500GB硬盘,分了四个MBR分区,C盘是激活的主分区,第二个分区50 ...

  9. 用一个例子告诉你gdb调试工具如何使用

                                        用GDB调试程序 GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式 ...

最新文章

  1. 2018年第九届蓝桥杯C/C++ C组国赛 —— 第四题:约瑟夫环
  2. QT中在终端下写个小例子
  3. C语言编程规范 clean code
  4. Java高级语法笔记-普通异常处理
  5. 系统配置 计算机管理,计算机系统安全配置管理方案
  6. Hadoop3.x 之 MapReduce 开发总结(月薪过万)
  7. MySQL统计每月数量并计算同比增长率
  8. 热敏打印机打不出字怎么解决
  9. [SHOI2015]激光发生器
  10. python开发录屏软件_Python移动端录屏库
  11. 【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?
  12. PHP导出word文档的简单实现方法(可导出图片)
  13. asc18_hpl,hpc,hpcg
  14. 新生研讨课报告 计算机,机械工程新生研讨课报告.docx
  15. js 判断是域名还是ip并获取当前url中指定部分
  16. 儿童编程c语言_5种最适合儿童的编程语言
  17. hdu1114 Piggy-Bank
  18. matlab simulink振动,Matlab作业Simulink 振动仿真.doc
  19. python综合程序设计-实验四 Python综合实践
  20. 苹果官方付费升级内存_新芯片、新电脑,或许还有苹果的新未来

热门文章

  1. ❤️六W字《计算机基础知识》(五)(建议收藏)❤️
  2. python发布_python网站发布
  3. 让8只数码管初始显示零,每隔大约1s加一显示,到数码管显示9后,再从一开始显示
  4. java制作加载界面_Java如何制作启动界面?
  5. vue移动端通过px动态计算图片宽高_vue图片宽高自适应_移动web图片高度自适应的解决方案...
  6. MySQL 删除用户
  7. Java main()方法
  8. zabbixdocker里的mysql_基于Docker安装与部署Zabbix
  9. 计算机设计大赛国奖作品_5. 模拟退火求解旅行商问题
  10. 简述使用计算机对会计工作的影响,简述使用计算机对会计工作的影响。