node-sass 安装失败问题

  • 环境变量中设置SASS_BINARY_PATH路径
  • 命令行中设置变量
    1
    set SASS_BINARY_PATH=C:\Users\charles.kou\AppData\Roaming\npm\node_modules\node-sass\vendor\win32-x64-57\binding.node

查看已设置的变量:

1
echo %SASS_BINARY_PATH%

nrm切换registry

nrm 是npm registry的管理工具,能够查看和切换当前使用的registry
install:

1
npm install -g nrm

list:

1
nrm ls

test:

1
nrm test

use:

1
nrm use [registryname]

常用:nrm use taobao

echarts - Angular 1.x指令集成

html

1
2
3
4
5
6
<div ng-app="demo" ng-controller="myCtrl" id="demo">
<div style="width: 640px; height: 320px;" bar-chart e-data="data"></div>
<div style="width: 640px; height: 320px;" pie-chart e-data="data"></div>
</div>
<!-- ... 省略文件中其他无关内容 -->
<script src="js/echarts.min.js"></script>

js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
var app = angular.module('demo', []); //定义一个模块
angular.module('demo').controller("myCtrl", function($scope, $http, $interval) { //定义控制器
$interval(function() { //调用$interval服务执行循环任务,3秒自动更新一次数据
$http.get("/demo_get") //调用$http服务获取数据
.success(function(data) {
if (data.status == '0') {
$scope.data = data.data; //将数据放在model中
}
}).error(function() {
$scope.data[0].value = Math.floor(Math.random() * 2000); //模拟数据改变测试
});
}, 3000);
//假设获取到的数据如下:
$scope.data = [{
'value': 335,
'name': '直接访问'
}, {
'value': 310,
'name': '邮件营销'
}, {
'value': 234,
'name': '联盟广告'
}, {
'value': 135,
'name': '视频广告'
}, {
'value': 748,
'name': '搜索引擎'
}];

});
angular.module('demo').directive('barChart', function($window) { //定义条形图指令
return {
restrict: 'A', //以属性的方式调用指令
link: function($scope, element, attrs) { //attrs是DOM元素的属性集合
var myChart = echarts.init(element[0]); //element是一个jqlite对象,如果jQuery在AngularJS之前引入,则是一个jQuery对象,可使用jQuery所有的方法
$scope.$watch(attrs.eData, function(newValue, oldValue, scope) { //监听属性e-data的值,当数据发生改变时执行作为第二个参数的函数
var xData = [],
sData = [],
data = newValue; //获取$scope.data
angular.forEach(data, function(val) {
xData.push(val.name);
sData.push(val.value);
});
var option = {
title: {
text: '某站点用户访问来源',
subtext: '纯属虚构',
x: 'center'
},
color: ['#3398DB'],
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [{
type: 'category',
data: xData,
axisTick: {
alignWithLabel: true
}
}],
yAxis: [{
type: 'value'
}],
series: [{
name: '直接访问',
type: 'bar',
barWidth: '60%',
data: sData
}]
};
myChart.setOption(option);
}, true); //$watch的第三个参数,是否深度监听,true监听对象所有属性的变化。
$window.onresize = function() { //调用window服务,使图表能响应式调整大小
myChart.resize();
};
}
};
});

angular.module('demo').directive('pieChart', function($window) { //定义饼图指令
return {
restrict: 'A',
link: function($scope, element, attrs) { //attrs是DOM元素的属性集合
var myChart = echarts.init(element[0]);
$scope.$watch(attrs.eData, function(newValue, oldValue, scope) {
var legend = [];
angular.forEach(newValue, function(val) {
legend.push(val.name);
});
var option = {
title: {
text: '某站点用户访问来源',
subtext: '纯属虚构',
x: 'center'
},
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient: 'vertical',
left: 'left',
data: legend
},
series: [{
name: '访问来源',
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
data: newValue,
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}]
};
myChart.setOption(option);
}, true);
window.addEventListener("resize", function() { //这里使用$window.onresize方法会使前面的图表无法调整大小
myChart.resize();
});
}
};
});

参考

ECharts - 可高度个性化定制的数据可视化图表
ECharts - API
在AngularJS中使用Echarts

nvm-windows安装使用指南

nvm-windows

  • nvm-windows是一个命令行工具
  • nvm-windows 并不是 nvm 的简单移植,他们也没有任何关系
  • nvm-windows切换node版本时,不同node版本之间不共享npm模块
  • 安装nvm-windows前需要卸载及删除node npm相关文件
  • 安装nvm-windows后必须为每个新安装的node单独安装全局应用,如gulp

安装前建议

全局模块

如当前已经安装node,且npm全局安装过一些模块,建议记录下这些全局模块留档
命令如下:

1
npm list -g --depth 0

项目模块

如项目中node_modules中包含模块,建议保存一份存档;如确定项目中package.json里的dependencies和devDependencies配置是规范的,可略过此项

卸载node

安装前先卸载任何现有版本的node.js, 并删除nodejs安装目录
可通过以下命令查找node或npm的安装路径:

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×