#前后端分离.NodeJs
##为什么要前后端分离
- 各种终端设备的兴起,需要我们把页面适配到更多的地方。
- 业务复杂,而我们希望尽可能地减少工作量,开始使用类似MV*的分层结构,使前端后分离成为必要。
- 前端需要处理更多的工作,希望有权操控View,Router(如:SPA的尝试)
历史发展的必然选择
#前后端分离.NodeJs
##为什么要前后端分离
历史发展的必然选择
#!/bin/bash | |
SLE=/System/Library/Extensions | |
RM=/bin/rm | |
PKGUTIL=/usr/sbin/pkgutil | |
TOUCH=/usr/bin/touch | |
if (( $UID != 0 )); then | |
echo This script must be run as root, try \'sudo $0\' | |
exit 1 |
/** | |
* Sample React Native App | |
* https://github.com/facebook/react-native | |
*/ | |
'use strict'; | |
var React = require('react-native'); | |
var fs = require('NativeModules').FileSystem; | |
var { | |
AppRegistry, |
var getShengmu = (function () { | |
var idx = -1; | |
var MAP = 'ABCDEFGHJKLMNOPQRSTWXYZ'; | |
var boundaryChar = '驁簿錯鵽樲鰒餜靃攟鬠纙鞪黁漚曝裠鶸蜶籜鶩鑂韻糳'; | |
if ( !String.prototype.localeCompare ) { | |
throw Error('String.prototype.localeCompare not supported.'); | |
} | |
return function getShengmu(c) { |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>demo</title> | |
<style> | |
</style> | |
</head> | |
<body> | |
<p>demo.html</p> |
var log = (function () { | |
if ( console && typeof console.log === 'function' ) { | |
if (console.log.bind) { | |
return console.log.bind(console); | |
} else { | |
return $.proxy(console.log, console); | |
} | |
} else { | |
return function () { | |
var log = window.__im_log = window.__im_log || []; |
var p = document.getElementsByTagName("p")[0]; | |
console.log(p.nodeName); // shows: "P" | |
p.outerHTML = "<div>This div replaced a paragraph.</div>"; | |
console.log(p.nodeName); // still "P"; | |
/* | |
Feature | Firefox (Gecko) | Chrome | Internet Explorer | Opera Safari | |
Basic support | 11 (11) | 0.2 | 4.0 | 7 1.3 |
function getLeftMarkIndex (codeStr, idx) { | |
var leftCS = codeStr.slice(0, idx); | |
var leftMarkIdx; | |
var rOpenMark = /[\[\{\(]/; | |
var rCloseMark = /[\]\}\)]/; | |
var matchMarks = /([\[\{\(]|[\]\}\)])/; | |
var matchMap = {']': '[', '}': ']', ')': '('}; | |
var unpairedCount = 0; | |
for (var i = leftCS.length - 1; i >= 0; i--) { |
// ==UserScript== | |
// @name emulator_touch_events | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description try to take over the world! | |
// @author author (uses https://github.com/hammerjs/touchemulator) | |
// @match http://tampermonkey.net/index.php?version=3.13.4890&ext=G3XV&updated=true | |
// @match *://*/* | |
// @grant none | |
// ==/UserScript== |
.mo-tips { | |
position: fixed; | |
top: 50%; | |
left: 50%; | |
width: 240px; | |
/*min-height: 100px;*/ | |
margin-top: -50px; | |
margin-left: -120px; | |
background-color: #fff; | |