angular2 学习笔记(1)- 工具配置和框架搭建

搭建 springboot 工程

工程框架

  • File -> New -> Project -> Spring Initializer
  • Dependencies: Web->Web, Template Engine->Thymeleaf
  • Thymeleaf 修改为 LEGACY 模式
    • pom.xml 中添加依赖

      <dependency>
        <groupId>net.sourceforge.nekohtml</groupId>
        <artifactId>nekohtml</artifactId>
      </dependency>
      
    • 修改 application.properties

      spring.thymeleaf.mode=LEGACYHTML5
      spring.thymeleaf.cache=false
      

Bean 配置

  • 添加类 BeanConfig

    @Configuration
    @ImportResource("classpath:bean.xml")
        public class BeanConfig {
    }
    
  • 在 src->main->resources 下添加文件 bean.xml,并添加 Bean 实例

    <bean name="myBean" class="com.fj.springboot01.MyBean"/>
    

添加路由

  • 给类添加注解 @Controller
  • 给类添加方法

    @RequestMapping("/hello")
    public String hello() {
      System.out.println("hello mapping");
      return "hello";
    }
    
  • 添加 hello.html ,放在 src/main/resources/templates 目录下

添加静态资源

  • angular2 生成的页面作为静态资源放在 src/main/resources/static 目录下

搭建 angular2 框架

安装软件

  • 下载并安装 node.js LTS 版本到 D:/nodejs 目录
  • 安装 cnpm

    npm install -g cnpm --registry=https://registry.npm.taobao.org
    
    
  • 修改 C:/Users/fj/.npmrc

    registry=https://registry.npm.taobao.org/
    prefix=D:\nodejs
    cache=D:\nodejs\node_cache
    
  • 安装 npm 软件包

    npm install -g @angular/cli webpack typescript tslint
    
    

工程框架

  • 新建代码框架,下载依赖

    cd spring001/src/main
    ng new angular
    cd angular
    npm install
    
  • 新建 Component

    ng g c component/data-grid
    
    
  • 修改页面

编译

  • 命令行编译生成目标文件

    ng build --prod --aot --bh /note/ --no-extract-license
    
    
  • 修改 package.json , 添加两行

    "scripts": {
      "develop":"ng build -bh /note/ -w",
      "release":"ng build -bh /note/ -prod -aot --env=prod --no-extract-license"
    },
    
  • 将目标文件移动到静态资源目录下, 修改 .angular-cli.json

    "outDir": "../resources/static/note", 
    

调试

  • tsconfig.json 中打开 sourceMap 选项

    "sourceMap": true,
    "inlineSources": true,
    
  • 在 IDEA 中直接创建 SpringBoot 启动项
  • 启动调试

svn cleanup 失败问题

  • 问题现象

    执行 svn update 时,提示上一次操作失败,需要先 cleanup。执行 svn cleanup 时,又提示”The system cannot move the file to a different disk drive.”

  • 原因分析

    我的 svn 目录中,有两个子目录是目录链接,链接到其它分区。而 svn 程序应该是调用了 rename api,这个调用是不能移动到不同分区的。

  • 解决方案
    • 取消目录链接,把目录复制过来,cleanup 完成后,再删除目录,创建链接。
    • 修改 svn 数据库
      • 用 sqlitebrowser 打开.svn/wc.db 文件,打开 WORK_QUEUE 表,删除内容,保存。
      • svn update

在 windows 上使用 ag 搜索

安装 chocolately

  • 用管理员登录,打开 cmd.exe ,执行命令
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

安装 ag

choco install ag

在 emacs 中使用 ag 搜索

  • 添加目录到 PATH 环境变量
C:\ProgramData\chocolatey\bin
  • 在 spacemacs 中, SPC s a 是 ag 的操作前缀

在 windows 上使用 oh-my-zsh

安装 cygwin

  • 安装 cygwin 64 位 到 D:/cygwin 目录
    • 添加两个国内镜像地址

      http://mirrors.163.com/cygwin/
      http://mirrors.sohu.com/cygwin/
      
  • 安装基本功能,另外选上 wget,apt-cyt 依赖这个
  • 下载 apt-cygD:/cygwin/bin 目录, 另存一个为 apt
  • 安装软件

    apt install curl git zsh chere python
    
    
  • 去掉路径 /cygdriver 前缀,修改 /etc/fstab

    none / cygdrive binary 0 0
    
    
  • 去掉 zsh 启动提示,修改 /cygwin/bin/xhere

    # echo Starting $1;
    
    
  • /bin/python-2.7.exe 另存一个为 /bin/python.exe ,autojump 用到

安装 oh-my-zsh

  • 执行安装命令
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

  • 修改 ~/.zshrc

    ZSH_THEME="ys"
    DISABLE_AUTO_UPDATE="true"
    DISABLE_UNTRACKED_FILES_DIRTY="true"
    plugins=(git autojump)
    
  • 安装 autojump

    git clone git://github.com/joelthelion/autojump.git
    cd /autojump
    ./install.py #在 bash 下安装,python 用 cygwin 版本
    
  • 修改 .oh-my-zsh/themes/ys.zsh-theme,删除 hg-info git-info 两行

安装 cmder

  • 下载 cmder_mini 并解压,添加快捷方式到桌面
  • 解决中文乱码问题,进入设置 Settings -> Startup -> Environment,添加

    set LANG=zh_CN.UTF-8
    
    
  • 添加 oh-my-zsh Task,进入设置 Settings -> Startup -> Tasks, 点“+”号

    oh-my-zsh
    Hotkey: Ctrl-Alt-O
    Task parameters: /icon D:\cygwin\Cygwin-Terminal.ico
    Commands: sh -c "/bin/xhere /bin/zsh.exe '%V'"
    
  • 设置默认 Task,进入设置 Settings -> Startup

    Specified named task: {oh-my-zsh}
    
    
  • 去掉 git 旧版本提示,修改 d:/green/cmder_mini/vender/init.bat

    rem echo Found old git version in "!test_dir!", but not using...
    
    

整合到 Total Commander

  • USERCMD.ini 最后添加

    [em_Everything]
    cmd=D:\Program Files\Everything\Everything.exe
    param="-search "%P ""
    
    [em_cmder]
    cmd=D:\green\cmder_mini\cmder.exe
    param="%P "
    
  • Wincmd.ini 中修改

    CA+F=cm_SearchFor
    C+F=em_Everything
    CA+G=cm_ExecuteDOS
    C+G=em_cmder
    A+D=cm_EditPath
    
  • Total Commander 最小化
    • 设置->选项->操作->取消“最小化到系统托盘”
    • wincmd.ini

      [Configuration] 
      MinimizeOnClose=1
      

      MinimizeOnClose 数值为以下某几个的值之和:

      1. 关闭按钮
      2. Alt+F4 组
      3. 界面内“Alt+F4 退出“按钮

MINGW 和 jni 相关几个问题

生成 jni 头文件方法

# file: src/com/litchi/HelloWord.java
cd src
javah com/litchi/HelloWorld

MINGW 编译 jni 无法被 java 加载问题

因为 dll 中导出的函数签名与 VC 生成的不一致。需要加上编译参数

-Wl,--add-stdcall-alias

用 strip 减小可执行文件大小

动态库 *.so *.dll

可以删除所有符号

strip -s *.so 

静态库 *.a

只能删除调试符号

strp -g --strip-unneeded *.a