start node

Submitted by Lizhe on Wed, 04/04/2018 - 10:07

cd /root/.jenkins/workspace/fr-commerce-front-admin/app

npm install

python /root/pyscripts/sedByPy.py ./scripts/start.js "const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;" "const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3001;"
python /root/pyscripts/sedByPy.py ./scripts/start.js "openBrowser(urls.localUrlForBrowser);" " "

npm install http-server -g
npm start &

python /root/pyscripts/test.py 

 

 

React browserHistory.push 传参

Submitted by Lizhe on Tue, 03/27/2018 - 16:03

传参方式1:

将参数直接写在路径中,前提是router定义时,需要指定参数的名字,这里假定为:value;

browserHistory.push(pathname: '/routerName/123');

如何获取到123呢?

通过this.props.params.value即可获取

传参方式2:

通过state传参,可以在页面跳转时,url中不显示参数;

browserHistory.push(pathname: '/routerName',state: { key: value });

跳转界面如何接收参数呢?

this.props.location.state.key便可以获得state中的key的value;

 

尝试了第二种方式发现不好用, 可能是router版本更新到4之后网上的内容太旧了

经过推敲之后发现可以这样

Maven的父子项目循环依赖问题

Submitted by Lizhe on Fri, 03/23/2018 - 23:37

        方法一:欺骗的办法,先去掉父pom.xml中的modules,然后install或者deploy父pom.xml,然后再install或者deploy所有依赖的子工程,最后再把父pom.xml中的modules都加上。

        方法二:使用参数-N,命令如:mvn install:install-file -DgroupId=test   -DartifactId=test-parent   -Dpackaging=pom  -Dfile=d:\wokspace\pom.xml -Dversion=3.0.4.7-SNAPSHOT -N,注意后边这个标红的-N就是我们要加的参数,这个参数的意思是:放弃递归子工程。

springboot maven 多模块引用不到依赖的类

Submitted by Lizhe on Fri, 03/23/2018 - 10:52

记录一个碰到的古怪问题

现象是, 我在使用springboot作为框架时, 使用了多个maven的子模块, 当开启eclipse的auto build时没有问题

怀疑是eclipse自己对项目进行了build,然后把class放在了正确的位置

当关闭了eclipse的build转为仅仅使用maven install命令时会提示找不到对应的自定义类

就是说A模块先install之后, B模块将A放入自己依赖描述, 然后引用A模块定义的class, 编译失败提示找不到

root cause 在于我使用了

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>

从springboot1.4 开始, springboot plugin打包的jar会将classes文件放入

一个名为BOOT-INF的文件夹而不是jar包的根路径 例如 C:\ttt\lira-user-0.0.1-SNAPSHOT\BOOT-INF\classes

ECMAScript6 (4) 类

Submitted by Lizhe on Thu, 03/08/2018 - 15:50

类的声明

ECMAScript6中有一种与其他语言中类似的类特性: 类声明

同时它也是ECMAScript6中最简单的类形式

要声明一个类

class Student{
    constructor(name){
        this.name = name;
    }
    sayName(){
        console.log(this.name);
    }
}

new Student('Li').sayName();

然后强调一下构造器中的this

其值会被绑定到调用this的函数的最近的父对象

ECMAScript6 (3) 对象

Submitted by Lizhe on Thu, 03/08/2018 - 15:21

ECMAScript(5) 中如果为对象添加方法, 必需通过指定名称并完整定义函数来实现, 例如下面的例子

var person = {
    name:"Li",
    sayName: function(){
        console.log(this.name);
    }    
}

person.sayName();

在ECMAScript6中等价于

ECMAScript6 (2) 函数

Submitted by Lizhe on Thu, 03/08/2018 - 12:18

Javascript 中, 无论函数定义中声明了多少形参, 都可以传入任意数量的参数,

也可以在定义函数时添加针对参数数量的处理逻辑, 当已定义的形参无对应的传入参数时为其指定一个默认值

在ECMAScript5 和早期版本中, 你可以通过以下方式创建函数并赋上默认值

function testArguments(a,b,c){
    b = "default b ";
    c = "default c ";
    
    console.log(a + b + c);
}

testArguments("a ");

上面的代码会输出

ECMAScript6 (1)

Submitted by Lizhe on Wed, 03/07/2018 - 17:23

 

ES6 中使用let和const 都可以声明变量, 但是它们与var不同

虽然var可以声明局部变量但是无论在哪里声明都会被当成在当前作用域顶部声明的变量, 这就是提升机制

function getValue(condition){

    if(condition){

        var value = "blue";

        return value;

    }else{

        return null;

    }

}

上面的代码编译后等价于

function getValue(condition){

    var value;

    if(condition){

React 入门 (1)

Submitted by Lizhe on Mon, 03/05/2018 - 10:07

本文将讨论如下问题

•Nodejs, NPM, Server, React 之间的关系

•异步IO模型

•FR Admin 项目结构

•如何从头创建一个自己的React项目

•React的模块化思想

•什么是JSX

 

Node.js 就是运行在服务端的 JavaScript(java)

webpack-dev-server是一个小型的Node.js Express服务器(tomcat)

NPM是随同NodeJS一起安装的包管理工具(mvn)

React主要用于构建UI

 

syncio

 

 

每线程/每请求的方式目前还被Apache所采用.

Nodejs (5) 异步编程

Submitted by Lizhe on Fri, 01/05/2018 - 14:53

服务端异步编程的核心思想在于: 事件发生会触发响应逻辑. 在Node的世界里流行两种响应逻辑管理方式: 

回调和事件监听

回调通常用来定义一次性响应的逻辑

事件监听器 本质上也是一个回调, 不同的是它跟一个事件相关联. 

var http = require('http');
http.createServer(
    function(req,res){
        res.writeHead(200,{'Content-type':'text/plain'});
        res.end('helloworld\n');
    }
).listen(3000);

回调是一个函数, 它被当做参数传给异步函数, 它描述了异步操作完成之后要做什么.

上面例子中的创建了一个HTTP服务器,并用回调定义响应逻辑