欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

ng 编译 构建 发布(布署) 命令 有大用 有大大用 有大大大用

1)   # ng build                    编译(构建)

在项目里会多出 dist 目录

image.png

这些就是布署时所需要的所有文件

它会把我们自己写的代码和我们所依赖的所有的代码,都经过了编译,合并,就变成了

dist目录里的所有文件

  布署时就是把它们与服务器里面的文件进行整合


把以上的文件拷贝 

然后在服务器端建一个client目录

然后 把 ng build 生成的所有的文件拷到 client目录下 (这就叫做布署)

image.png



打开 nodejs服务器

image.png

image.png

nodejs服务器改了代码后 现在可以正常访问了

image.png


这个  product/1 路由 是通过 angular路由来的

image.png

一旦直接刷新浏览器, 就会报错 不能访问

因为 服务器端没有    product/1   这个请求的处理

当刷新浏览器的时候,浏览器 只是发送  localhost:8000/product/1 这个请求,


image.png

如何解决?

在 angular 的源代码里面,

在 app.module.ts 文件里

在 providers: 里面 增加一个 provide 

{provide:LocationStrategy,useClass:HashLocationStroegy}

image.png

修改 angular 后

重新编译下 #  ng  build

(它会把刚改过的 typescript 重新在dist文件夹里面生成新的编译后的文件)

再把编译后 生成的dist里面的文件拷到 nodejs 服务器端 (覆盖原来的文件)


重新访问 http://localhost:8000 就会多了 /#/    这样的井号 

image.png


这样访问里面的东西  同样会有 井号 了  

此时点刷新按钮 ,就是正常的显示了

(井号就是告诉浏览器, 应该是先到 localhost:8000/#/ 这个地址上,

然后再通过 angular的 路由进到  product/1 上 

)

image.png




image.png

image.png



image.png



image.png

 


image.png


image.png


由下图这里 可以看出 # ng serve --env=prod 相当于 # npm run start


image.png


image.png



image.png




image.png

image.png


image.png


image.png



image.png


image.png




image.png


image.png


image.png


image.png



# ng build --env=prod   (这个 ng build 也是可以使用 --env 指定环境的)

image.png

普通分类: